[jboss-svn-commits] JBL Code SVN: r23497 - in labs/jbossrules/trunk: drools-compiler/src/main/java/org/drools/lang/descr and 7 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Oct 17 12:23:07 EDT 2008


Author: tirelli
Date: 2008-10-17 12:23:06 -0400 (Fri, 17 Oct 2008)
New Revision: 23497

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_MetaConsequence.drl
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/Rule_with_Metadata.drl
Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/RuleDescr.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Rule.java
Log:
JBRULES-1803: adding support to rules metadata

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2008-10-17 13:03:49 UTC (rev 23496)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2008-10-17 16:23:06 UTC (rev 23497)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2008-09-21 11:30:36
+// $ANTLR 3.0.1 src/main/resources/org/drools/lang/DRL.g 2008-10-16 18:53:59
 
 	package org.drools.lang;
 
@@ -10,133 +10,133 @@
 import java.util.Map;
 import java.util.HashMap;
 public class DRLLexer extends Lexer {
-    public static final int COMMA=89;
-    public static final int VT_PATTERN_TYPE=39;
-    public static final int VT_ACCUMULATE_ID_CLAUSE=28;
-    public static final int VK_DIALECT=54;
+    public static final int VT_ACCESSOR_ELEMENT=37;
+    public static final int ACCUMULATE=101;
+    public static final int VT_DATA_TYPE=38;
+    public static final int DOT_STAR=85;
     public static final int VK_FUNCTION=64;
-    public static final int END=86;
-    public static final int HexDigit=123;
-    public static final int VK_ATTRIBUTES=57;
-    public static final int VT_EXPRESSION_CHAIN=30;
-    public static final int MISC=119;
-    public static final int VT_AND_PREFIX=23;
-    public static final int VK_QUERY=62;
-    public static final int THEN=116;
+    public static final int VK_GLOBAL=65;
+    public static final int VK_AND=76;
+    public static final int EQUALS=93;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=126;
     public static final int VK_AUTO_FOCUS=49;
-    public static final int DOT=84;
+    public static final int VK_SALIENCE=55;
+    public static final int EOF=-1;
+    public static final int VT_PATTERN_TYPE=39;
+    public static final int VT_FUNCTION_IMPORT=5;
+    public static final int VT_OR_INFIX=26;
+    public static final int DOUBLE_AMPER=98;
+    public static final int EOL=120;
+    public static final int GREATER=106;
     public static final int VK_IMPORT=59;
+    public static final int NOT_EQUAL=110;
+    public static final int VK_ACTION=79;
+    public static final int VK_RULE=58;
+    public static final int VK_MEMBEROF=71;
+    public static final int LESS=108;
+    public static final int GRAVE_ACCENT=111;
     public static final int VT_SLOT=15;
+    public static final int VK_OR=75;
+    public static final int VT_AND_PREFIX=23;
+    public static final int NULL=113;
+    public static final int BOOL=95;
+    public static final int VK_QUERY=62;
+    public static final int SEMICOLON=82;
+    public static final int INT=96;
+    public static final int VT_FUNCTION_ID=43;
+    public static final int VT_RHS_CHUNK=17;
+    public static final int VT_FACT_BINDING=32;
+    public static final int VK_ENTRY_POINT=72;
+    public static final int VK_RULEFLOW_GROUP=52;
+    public static final int VK_RESULT=81;
     public static final int VT_PACKAGE_ID=40;
-    public static final int LEFT_SQUARE=114;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=126;
-    public static final int VT_DATA_TYPE=38;
-    public static final int VK_MATCHES=68;
+    public static final int VT_LABEL=8;
+    public static final int WS=121;
+    public static final int VK_NO_LOOP=48;
+    public static final int LEFT_CURLY=117;
     public static final int VT_FACT=6;
-    public static final int LEFT_CURLY=117;
-    public static final int AT=91;
+    public static final int VT_PATTERN=31;
+    public static final int VK_IN=74;
     public static final int LEFT_PAREN=88;
-    public static final int DOUBLE_AMPER=98;
-    public static final int VT_QUERY_ID=9;
-    public static final int VT_ACCESSOR_PATH=36;
-    public static final int VT_LABEL=8;
-    public static final int WHEN=94;
-    public static final int VT_ENTRYPOINT_ID=13;
-    public static final int VK_SOUNDSLIKE=70;
-    public static final int VK_SALIENCE=55;
-    public static final int VT_FIELD=35;
-    public static final int WS=121;
-    public static final int OVER=100;
-    public static final int STRING=87;
-    public static final int VK_AND=76;
-    public static final int VT_ACCESSOR_ELEMENT=37;
-    public static final int VT_ACCUMULATE_INIT_CLAUSE=27;
-    public static final int VK_GLOBAL=65;
-    public static final int VK_REVERSE=80;
-    public static final int VT_BEHAVIOR=21;
-    public static final int GRAVE_ACCENT=111;
-    public static final int VK_DURATION=53;
-    public static final int VT_SQUARE_CHUNK=19;
-    public static final int VK_FORALL=78;
-    public static final int VT_PAREN_CHUNK=20;
-    public static final int VT_COMPILATION_UNIT=4;
+    public static final int LESS_EQUAL=109;
+    public static final int VT_IMPORT_ID=41;
+    public static final int VT_RULE_ID=12;
+    public static final int MISC=119;
+    public static final int FROM=99;
+    public static final int END=86;
     public static final int COLLECT=103;
+    public static final int INIT=102;
+    public static final int EscapeSequence=122;
+    public static final int VK_ACTIVATION_GROUP=50;
     public static final int VK_ENABLED=56;
-    public static final int EQUALS=93;
-    public static final int VK_RESULT=81;
-    public static final int UnicodeEscape=124;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=127;
     public static final int VK_PACKAGE=60;
-    public static final int VT_RULE_ID=12;
-    public static final int EQUAL=105;
-    public static final int VK_NO_LOOP=48;
-    public static final int SEMICOLON=82;
-    public static final int VK_TEMPLATE=61;
-    public static final int VT_AND_IMPLICIT=22;
-    public static final int NULL=113;
-    public static final int COLON=92;
-    public static final int MULTI_LINE_COMMENT=128;
-    public static final int VT_RULE_ATTRIBUTES=16;
+    public static final int OVER=100;
     public static final int RIGHT_SQUARE=115;
-    public static final int VK_AGENDA_GROUP=51;
+    public static final int RIGHT_CURLY=118;
+    public static final int VK_MATCHES=68;
     public static final int VT_FACT_OR=33;
-    public static final int VK_NOT=73;
+    public static final int VT_FIELD=35;
+    public static final int FLOAT=112;
+    public static final int VT_ACCUMULATE_ID_CLAUSE=28;
+    public static final int VK_EXISTS=77;
     public static final int VK_DATE_EXPIRES=46;
-    public static final int ARROW=104;
-    public static final int FLOAT=112;
-    public static final int INIT=102;
-    public static final int VT_SLOT_ID=14;
-    public static final int VT_CURLY_CHUNK=18;
+    public static final int ID=83;
+    public static final int HexDigit=123;
     public static final int VT_OR_PREFIX=24;
+    public static final int VK_EVAL=66;
     public static final int DOUBLE_PIPE=97;
-    public static final int LESS=108;
-    public static final int VT_TYPE_DECLARE_ID=11;
-    public static final int VT_PATTERN=31;
-    public static final int VK_DATE_EFFECTIVE=45;
-    public static final int EscapeSequence=122;
-    public static final int VK_EXISTS=77;
-    public static final int INT=96;
-    public static final int VT_BIND_FIELD=34;
-    public static final int VK_RULE=58;
-    public static final int VK_EVAL=66;
-    public static final int GREATER=106;
-    public static final int VT_FACT_BINDING=32;
-    public static final int ID=83;
-    public static final int FROM=99;
-    public static final int NOT_EQUAL=110;
-    public static final int RIGHT_CURLY=118;
-    public static final int VK_ENTRY_POINT=72;
-    public static final int VT_PARAM_LIST=44;
-    public static final int VT_AND_INFIX=25;
-    public static final int BOOL=95;
+    public static final int AT=91;
+    public static final int RIGHT_PAREN=90;
+    public static final int THEN=116;
+    public static final int VT_COMPILATION_UNIT=4;
+    public static final int VT_EXPRESSION_CHAIN=30;
+    public static final int COMMA=89;
+    public static final int EQUAL=105;
+    public static final int VT_BEHAVIOR=21;
+    public static final int VT_QUERY_ID=9;
+    public static final int VK_DIALECT=54;
+    public static final int DOT=84;
+    public static final int VT_GLOBAL_ID=42;
+    public static final int VK_NOT=73;
     public static final int VT_FROM_SOURCE=29;
+    public static final int VK_DECLARE=63;
+    public static final int VT_ENTRYPOINT_ID=13;
+    public static final int VT_PAREN_CHUNK=20;
     public static final int VK_CONTAINS=67;
+    public static final int VT_TYPE_DECLARE_ID=11;
+    public static final int VK_REVERSE=80;
     public static final int VK_LOCK_ON_ACTIVE=47;
-    public static final int VT_FUNCTION_IMPORT=5;
-    public static final int VK_IN=74;
-    public static final int VT_RHS_CHUNK=17;
-    public static final int VK_MEMBEROF=71;
-    public static final int GREATER_EQUAL=107;
-    public static final int VT_OR_INFIX=26;
-    public static final int DOT_STAR=85;
-    public static final int VK_OR=75;
-    public static final int VT_GLOBAL_ID=42;
-    public static final int LESS_EQUAL=109;
-    public static final int ACCUMULATE=101;
-    public static final int VK_RULEFLOW_GROUP=52;
-    public static final int VT_FUNCTION_ID=43;
-    public static final int EOF=-1;
-    public static final int VT_CONSTRAINTS=7;
-    public static final int VT_IMPORT_ID=41;
-    public static final int EOL=120;
-    public static final int VK_ACTIVATION_GROUP=50;
+    public static final int VK_TEMPLATE=61;
+    public static final int VK_DURATION=53;
+    public static final int VT_RULE_ATTRIBUTES=16;
+    public static final int VT_AND_INFIX=25;
     public static final int Tokens=129;
-    public static final int OctalEscape=125;
-    public static final int VK_ACTION=79;
+    public static final int VT_ACCESSOR_PATH=36;
+    public static final int MULTI_LINE_COMMENT=128;
+    public static final int VK_FORALL=78;
+    public static final int COLON=92;
     public static final int VK_EXCLUDES=69;
-    public static final int RIGHT_PAREN=90;
+    public static final int VK_SOUNDSLIKE=70;
+    public static final int VT_AND_IMPLICIT=22;
+    public static final int VT_ACCUMULATE_INIT_CLAUSE=27;
+    public static final int VT_CURLY_CHUNK=18;
+    public static final int VT_SLOT_ID=14;
+    public static final int VK_ATTRIBUTES=57;
+    public static final int WHEN=94;
+    public static final int UnicodeEscape=124;
+    public static final int VT_SQUARE_CHUNK=19;
+    public static final int VK_DATE_EFFECTIVE=45;
     public static final int VT_TEMPLATE_ID=10;
-    public static final int VK_DECLARE=63;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=127;
+    public static final int VT_PARAM_LIST=44;
+    public static final int ARROW=104;
+    public static final int VT_BIND_FIELD=34;
+    public static final int VK_AGENDA_GROUP=51;
+    public static final int VT_CONSTRAINTS=7;
+    public static final int LEFT_SQUARE=114;
+    public static final int GREATER_EQUAL=107;
+    public static final int OctalEscape=125;
+    public static final int STRING=87;
 
     	/** The standard method called to automatically emit a token at the
     	 *  outermost lexical rule.  The token object should point into the
@@ -162,16 +162,16 @@
         super(input);
         ruleMemo = new HashMap[49+1];
      }
-    public String getGrammarFileName() { return "/Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g"; }
+    public String getGrammarFileName() { return "src/main/resources/org/drools/lang/DRL.g"; }
 
     // $ANTLR start WS
     public final void mWS() throws RecognitionException {
         try {
             int _type = WS;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1684:9: ( ( ' ' | '\\t' | '\\f' | EOL )+ )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1684:17: ( ' ' | '\\t' | '\\f' | EOL )+
+            // src/main/resources/org/drools/lang/DRL.g:1684:9: ( ( ' ' | '\\t' | '\\f' | EOL )+ )
+            // src/main/resources/org/drools/lang/DRL.g:1684:17: ( ' ' | '\\t' | '\\f' | EOL )+
             {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1684:17: ( ' ' | '\\t' | '\\f' | EOL )+
+            // src/main/resources/org/drools/lang/DRL.g:1684:17: ( ' ' | '\\t' | '\\f' | EOL )+
             int cnt1=0;
             loop1:
             do {
@@ -203,28 +203,28 @@
 
                 switch (alt1) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1684:19: ' '
+            	    // src/main/resources/org/drools/lang/DRL.g:1684:19: ' '
             	    {
             	    match(' '); if (failed) return ;
 
             	    }
             	    break;
             	case 2 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1685:19: '\\t'
+            	    // src/main/resources/org/drools/lang/DRL.g:1685:19: '\\t'
             	    {
             	    match('\t'); if (failed) return ;
 
             	    }
             	    break;
             	case 3 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1686:19: '\\f'
+            	    // src/main/resources/org/drools/lang/DRL.g:1686:19: '\\f'
             	    {
             	    match('\f'); if (failed) return ;
 
             	    }
             	    break;
             	case 4 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1687:19: EOL
+            	    // src/main/resources/org/drools/lang/DRL.g:1687:19: EOL
             	    {
             	    mEOL(); if (failed) return ;
 
@@ -257,10 +257,10 @@
     // $ANTLR start EOL
     public final void mEOL() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1693:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1694:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // src/main/resources/org/drools/lang/DRL.g:1693:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
+            // src/main/resources/org/drools/lang/DRL.g:1694:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1694:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // src/main/resources/org/drools/lang/DRL.g:1694:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             int alt2=3;
             int LA2_0 = input.LA(1);
 
@@ -285,7 +285,7 @@
             }
             switch (alt2) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1694:14: ( '\\r\\n' )=> '\\r\\n'
+                    // src/main/resources/org/drools/lang/DRL.g:1694:14: ( '\\r\\n' )=> '\\r\\n'
                     {
                     match("\r\n"); if (failed) return ;
 
@@ -293,14 +293,14 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1695:25: '\\r'
+                    // src/main/resources/org/drools/lang/DRL.g:1695:25: '\\r'
                     {
                     match('\r'); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1696:25: '\\n'
+                    // src/main/resources/org/drools/lang/DRL.g:1696:25: '\\n'
                     {
                     match('\n'); if (failed) return ;
 
@@ -322,10 +322,10 @@
     public final void mINT() throws RecognitionException {
         try {
             int _type = INT;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:2: ( ( '-' )? ( '0' .. '9' )+ )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:4: ( '-' )? ( '0' .. '9' )+
+            // src/main/resources/org/drools/lang/DRL.g:1701:2: ( ( '-' )? ( '0' .. '9' )+ )
+            // src/main/resources/org/drools/lang/DRL.g:1701:4: ( '-' )? ( '0' .. '9' )+
             {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:4: ( '-' )?
+            // src/main/resources/org/drools/lang/DRL.g:1701:4: ( '-' )?
             int alt3=2;
             int LA3_0 = input.LA(1);
 
@@ -334,7 +334,7 @@
             }
             switch (alt3) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:5: '-'
+                    // src/main/resources/org/drools/lang/DRL.g:1701:5: '-'
                     {
                     match('-'); if (failed) return ;
 
@@ -343,7 +343,7 @@
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:10: ( '0' .. '9' )+
+            // src/main/resources/org/drools/lang/DRL.g:1701:10: ( '0' .. '9' )+
             int cnt4=0;
             loop4:
             do {
@@ -357,7 +357,7 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:11: '0' .. '9'
+            	    // src/main/resources/org/drools/lang/DRL.g:1701:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -388,10 +388,10 @@
     public final void mFLOAT() throws RecognitionException {
         try {
             int _type = FLOAT;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:2: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
+            // src/main/resources/org/drools/lang/DRL.g:1705:2: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
+            // src/main/resources/org/drools/lang/DRL.g:1705:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
             {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:4: ( '-' )?
+            // src/main/resources/org/drools/lang/DRL.g:1705:4: ( '-' )?
             int alt5=2;
             int LA5_0 = input.LA(1);
 
@@ -400,7 +400,7 @@
             }
             switch (alt5) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:5: '-'
+                    // src/main/resources/org/drools/lang/DRL.g:1705:5: '-'
                     {
                     match('-'); if (failed) return ;
 
@@ -409,7 +409,7 @@
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:10: ( '0' .. '9' )+
+            // src/main/resources/org/drools/lang/DRL.g:1705:10: ( '0' .. '9' )+
             int cnt6=0;
             loop6:
             do {
@@ -423,7 +423,7 @@
 
                 switch (alt6) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:11: '0' .. '9'
+            	    // src/main/resources/org/drools/lang/DRL.g:1705:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -441,7 +441,7 @@
             } while (true);
 
             match('.'); if (failed) return ;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:26: ( '0' .. '9' )+
+            // src/main/resources/org/drools/lang/DRL.g:1705:26: ( '0' .. '9' )+
             int cnt7=0;
             loop7:
             do {
@@ -455,7 +455,7 @@
 
                 switch (alt7) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:27: '0' .. '9'
+            	    // src/main/resources/org/drools/lang/DRL.g:1705:27: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -486,7 +486,7 @@
     public final void mSTRING() throws RecognitionException {
         try {
             int _type = STRING;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1709:5: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
+            // src/main/resources/org/drools/lang/DRL.g:1709:5: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -505,13 +505,13 @@
             }
             switch (alt10) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1709:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+                    // src/main/resources/org/drools/lang/DRL.g:1709:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
                     {
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1709:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1709:9: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
+                    // src/main/resources/org/drools/lang/DRL.g:1709:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+                    // src/main/resources/org/drools/lang/DRL.g:1709:9: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
                     {
                     match('\"'); if (failed) return ;
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1709:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
+                    // src/main/resources/org/drools/lang/DRL.g:1709:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
                     loop8:
                     do {
                         int alt8=3;
@@ -527,14 +527,14 @@
 
                         switch (alt8) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1709:15: EscapeSequence
+                    	    // src/main/resources/org/drools/lang/DRL.g:1709:15: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1709:32: ~ ( '\\\\' | '\"' )
+                    	    // src/main/resources/org/drools/lang/DRL.g:1709:32: ~ ( '\\\\' | '\"' )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
                     	        input.consume();
@@ -564,13 +564,13 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1710:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+                    // src/main/resources/org/drools/lang/DRL.g:1710:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
                     {
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1710:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1710:9: '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\''
+                    // src/main/resources/org/drools/lang/DRL.g:1710:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+                    // src/main/resources/org/drools/lang/DRL.g:1710:9: '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\''
                     {
                     match('\''); if (failed) return ;
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1710:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
+                    // src/main/resources/org/drools/lang/DRL.g:1710:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
                     loop9:
                     do {
                         int alt9=3;
@@ -586,14 +586,14 @@
 
                         switch (alt9) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1710:16: EscapeSequence
+                    	    // src/main/resources/org/drools/lang/DRL.g:1710:16: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1710:33: ~ ( '\\\\' | '\\'' )
+                    	    // src/main/resources/org/drools/lang/DRL.g:1710:33: ~ ( '\\\\' | '\\'' )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
                     	        input.consume();
@@ -634,8 +634,8 @@
     // $ANTLR start HexDigit
     public final void mHexDigit() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1714:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1714:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
+            // src/main/resources/org/drools/lang/DRL.g:1714:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
+            // src/main/resources/org/drools/lang/DRL.g:1714: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();
@@ -660,12 +660,17 @@
     // $ANTLR start EscapeSequence
     public final void mEscapeSequence() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1718:5: ( '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' ) | UnicodeEscape | OctalEscape )
+            // src/main/resources/org/drools/lang/DRL.g:1718: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);
 
             if ( (LA11_0=='\\') ) {
                 switch ( input.LA(2) ) {
+                case 'u':
+                    {
+                    alt11=2;
+                    }
+                    break;
                 case '\"':
                 case '$':
                 case '&':
@@ -712,11 +717,6 @@
                     alt11=1;
                     }
                     break;
-                case 'u':
-                    {
-                    alt11=2;
-                    }
-                    break;
                 case '0':
                 case '1':
                 case '2':
@@ -747,7 +747,7 @@
             }
             switch (alt11) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1718:9: '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' )
+                    // src/main/resources/org/drools/lang/DRL.g:1718: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)<='}') ) {
@@ -765,14 +765,14 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1722:9: UnicodeEscape
+                    // src/main/resources/org/drools/lang/DRL.g:1722:9: UnicodeEscape
                     {
                     mUnicodeEscape(); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1723:9: OctalEscape
+                    // src/main/resources/org/drools/lang/DRL.g:1723:9: OctalEscape
                     {
                     mOctalEscape(); if (failed) return ;
 
@@ -789,7 +789,7 @@
     // $ANTLR start OctalEscape
     public final void mOctalEscape() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
+            // src/main/resources/org/drools/lang/DRL.g:1728:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
             int alt12=3;
             int LA12_0 = input.LA(1);
 
@@ -800,9 +800,9 @@
                     int LA12_2 = input.LA(3);
 
                     if ( ((LA12_2>='0' && LA12_2<='7')) ) {
-                        int LA12_4 = input.LA(4);
+                        int LA12_5 = input.LA(4);
 
-                        if ( ((LA12_4>='0' && LA12_4<='7')) ) {
+                        if ( ((LA12_5>='0' && LA12_5<='7')) ) {
                             alt12=1;
                         }
                         else {
@@ -837,25 +837,25 @@
             }
             switch (alt12) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                    // src/main/resources/org/drools/lang/DRL.g:1728:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (failed) return ;
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:14: ( '0' .. '3' )
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:15: '0' .. '3'
+                    // src/main/resources/org/drools/lang/DRL.g:1728:14: ( '0' .. '3' )
+                    // src/main/resources/org/drools/lang/DRL.g:1728:15: '0' .. '3'
                     {
                     matchRange('0','3'); if (failed) return ;
 
                     }
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:25: ( '0' .. '7' )
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:26: '0' .. '7'
+                    // src/main/resources/org/drools/lang/DRL.g:1728:25: ( '0' .. '7' )
+                    // src/main/resources/org/drools/lang/DRL.g:1728:26: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
                     }
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:36: ( '0' .. '7' )
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:37: '0' .. '7'
+                    // src/main/resources/org/drools/lang/DRL.g:1728:36: ( '0' .. '7' )
+                    // src/main/resources/org/drools/lang/DRL.g:1728:37: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
@@ -865,18 +865,18 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1729:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+                    // src/main/resources/org/drools/lang/DRL.g:1729:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (failed) return ;
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1729:14: ( '0' .. '7' )
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1729:15: '0' .. '7'
+                    // src/main/resources/org/drools/lang/DRL.g:1729:14: ( '0' .. '7' )
+                    // src/main/resources/org/drools/lang/DRL.g:1729:15: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
                     }
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1729:25: ( '0' .. '7' )
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1729:26: '0' .. '7'
+                    // src/main/resources/org/drools/lang/DRL.g:1729:25: ( '0' .. '7' )
+                    // src/main/resources/org/drools/lang/DRL.g:1729:26: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
@@ -886,11 +886,11 @@
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1730:9: '\\\\' ( '0' .. '7' )
+                    // src/main/resources/org/drools/lang/DRL.g:1730:9: '\\\\' ( '0' .. '7' )
                     {
                     match('\\'); if (failed) return ;
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1730:14: ( '0' .. '7' )
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1730:15: '0' .. '7'
+                    // src/main/resources/org/drools/lang/DRL.g:1730:14: ( '0' .. '7' )
+                    // src/main/resources/org/drools/lang/DRL.g:1730:15: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
@@ -910,8 +910,8 @@
     // $ANTLR start UnicodeEscape
     public final void mUnicodeEscape() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1735:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1735:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
+            // src/main/resources/org/drools/lang/DRL.g:1735:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            // src/main/resources/org/drools/lang/DRL.g:1735:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
             {
             match('\\'); if (failed) return ;
             match('u'); if (failed) return ;
@@ -932,10 +932,10 @@
     public final void mBOOL() throws RecognitionException {
         try {
             int _type = BOOL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1739:2: ( ( 'true' | 'false' ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1739:4: ( 'true' | 'false' )
+            // src/main/resources/org/drools/lang/DRL.g:1739:2: ( ( 'true' | 'false' ) )
+            // src/main/resources/org/drools/lang/DRL.g:1739:4: ( 'true' | 'false' )
             {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1739:4: ( 'true' | 'false' )
+            // src/main/resources/org/drools/lang/DRL.g:1739:4: ( 'true' | 'false' )
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -954,7 +954,7 @@
             }
             switch (alt13) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1739:5: 'true'
+                    // src/main/resources/org/drools/lang/DRL.g:1739:5: 'true'
                     {
                     match("true"); if (failed) return ;
 
@@ -962,7 +962,7 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1739:12: 'false'
+                    // src/main/resources/org/drools/lang/DRL.g:1739:12: 'false'
                     {
                     match("false"); if (failed) return ;
 
@@ -986,8 +986,8 @@
     public final void mACCUMULATE() throws RecognitionException {
         try {
             int _type = ACCUMULATE;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1743:2: ( 'accumulate' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1743:4: 'accumulate'
+            // src/main/resources/org/drools/lang/DRL.g:1743:2: ( 'accumulate' )
+            // src/main/resources/org/drools/lang/DRL.g:1743:4: 'accumulate'
             {
             match("accumulate"); if (failed) return ;
 
@@ -1005,8 +1005,8 @@
     public final void mCOLLECT() throws RecognitionException {
         try {
             int _type = COLLECT;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1747:2: ( 'collect' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1747:4: 'collect'
+            // src/main/resources/org/drools/lang/DRL.g:1747:2: ( 'collect' )
+            // src/main/resources/org/drools/lang/DRL.g:1747:4: 'collect'
             {
             match("collect"); if (failed) return ;
 
@@ -1024,8 +1024,8 @@
     public final void mEND() throws RecognitionException {
         try {
             int _type = END;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1750:5: ( 'end' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1750:7: 'end'
+            // src/main/resources/org/drools/lang/DRL.g:1750:5: ( 'end' )
+            // src/main/resources/org/drools/lang/DRL.g:1750:7: 'end'
             {
             match("end"); if (failed) return ;
 
@@ -1043,8 +1043,8 @@
     public final void mFROM() throws RecognitionException {
         try {
             int _type = FROM;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1754:2: ( 'from' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1754:4: 'from'
+            // src/main/resources/org/drools/lang/DRL.g:1754:2: ( 'from' )
+            // src/main/resources/org/drools/lang/DRL.g:1754:4: 'from'
             {
             match("from"); if (failed) return ;
 
@@ -1062,8 +1062,8 @@
     public final void mINIT() throws RecognitionException {
         try {
             int _type = INIT;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1758:2: ( 'init' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1758:4: 'init'
+            // src/main/resources/org/drools/lang/DRL.g:1758:2: ( 'init' )
+            // src/main/resources/org/drools/lang/DRL.g:1758:4: 'init'
             {
             match("init"); if (failed) return ;
 
@@ -1081,8 +1081,8 @@
     public final void mNULL() throws RecognitionException {
         try {
             int _type = NULL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1762:2: ( 'null' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1762:4: 'null'
+            // src/main/resources/org/drools/lang/DRL.g:1762:2: ( 'null' )
+            // src/main/resources/org/drools/lang/DRL.g:1762:4: 'null'
             {
             match("null"); if (failed) return ;
 
@@ -1100,8 +1100,8 @@
     public final void mOVER() throws RecognitionException {
         try {
             int _type = OVER;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1766:2: ( 'over' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1766:4: 'over'
+            // src/main/resources/org/drools/lang/DRL.g:1766:2: ( 'over' )
+            // src/main/resources/org/drools/lang/DRL.g:1766:4: 'over'
             {
             match("over"); if (failed) return ;
 
@@ -1119,8 +1119,8 @@
     public final void mTHEN() throws RecognitionException {
         try {
             int _type = THEN;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1770:2: ( 'then' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1770:4: 'then'
+            // src/main/resources/org/drools/lang/DRL.g:1770:2: ( 'then' )
+            // src/main/resources/org/drools/lang/DRL.g:1770:4: 'then'
             {
             match("then"); if (failed) return ;
 
@@ -1138,8 +1138,8 @@
     public final void mWHEN() throws RecognitionException {
         try {
             int _type = WHEN;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1774:2: ( 'when' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1774:4: 'when'
+            // src/main/resources/org/drools/lang/DRL.g:1774:2: ( 'when' )
+            // src/main/resources/org/drools/lang/DRL.g:1774:4: 'when'
             {
             match("when"); if (failed) return ;
 
@@ -1157,8 +1157,8 @@
     public final void mGRAVE_ACCENT() throws RecognitionException {
         try {
             int _type = GRAVE_ACCENT;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1778:2: ( '`' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1778:4: '`'
+            // src/main/resources/org/drools/lang/DRL.g:1778:2: ( '`' )
+            // src/main/resources/org/drools/lang/DRL.g:1778:4: '`'
             {
             match('`'); if (failed) return ;
 
@@ -1175,8 +1175,8 @@
     public final void mAT() throws RecognitionException {
         try {
             int _type = AT;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1781:4: ( '@' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1781:6: '@'
+            // src/main/resources/org/drools/lang/DRL.g:1781:4: ( '@' )
+            // src/main/resources/org/drools/lang/DRL.g:1781:6: '@'
             {
             match('@'); if (failed) return ;
 
@@ -1193,8 +1193,8 @@
     public final void mEQUALS() throws RecognitionException {
         try {
             int _type = EQUALS;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1785:2: ( '=' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1785:4: '='
+            // src/main/resources/org/drools/lang/DRL.g:1785:2: ( '=' )
+            // src/main/resources/org/drools/lang/DRL.g:1785:4: '='
             {
             match('='); if (failed) return ;
 
@@ -1211,8 +1211,8 @@
     public final void mSEMICOLON() throws RecognitionException {
         try {
             int _type = SEMICOLON;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1789:2: ( ';' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1789:4: ';'
+            // src/main/resources/org/drools/lang/DRL.g:1789:2: ( ';' )
+            // src/main/resources/org/drools/lang/DRL.g:1789:4: ';'
             {
             match(';'); if (failed) return ;
 
@@ -1229,8 +1229,8 @@
     public final void mDOT_STAR() throws RecognitionException {
         try {
             int _type = DOT_STAR;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1793:2: ( '.*' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1793:4: '.*'
+            // src/main/resources/org/drools/lang/DRL.g:1793:2: ( '.*' )
+            // src/main/resources/org/drools/lang/DRL.g:1793:4: '.*'
             {
             match(".*"); if (failed) return ;
 
@@ -1248,8 +1248,8 @@
     public final void mCOLON() throws RecognitionException {
         try {
             int _type = COLON;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1797:2: ( ':' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1797:4: ':'
+            // src/main/resources/org/drools/lang/DRL.g:1797:2: ( ':' )
+            // src/main/resources/org/drools/lang/DRL.g:1797:4: ':'
             {
             match(':'); if (failed) return ;
 
@@ -1266,8 +1266,8 @@
     public final void mEQUAL() throws RecognitionException {
         try {
             int _type = EQUAL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1801:2: ( '==' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1801:4: '=='
+            // src/main/resources/org/drools/lang/DRL.g:1801:2: ( '==' )
+            // src/main/resources/org/drools/lang/DRL.g:1801:4: '=='
             {
             match("=="); if (failed) return ;
 
@@ -1285,8 +1285,8 @@
     public final void mNOT_EQUAL() throws RecognitionException {
         try {
             int _type = NOT_EQUAL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1805:2: ( '!=' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1805:4: '!='
+            // src/main/resources/org/drools/lang/DRL.g:1805:2: ( '!=' )
+            // src/main/resources/org/drools/lang/DRL.g:1805:4: '!='
             {
             match("!="); if (failed) return ;
 
@@ -1304,8 +1304,8 @@
     public final void mGREATER() throws RecognitionException {
         try {
             int _type = GREATER;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1809:2: ( '>' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1809:4: '>'
+            // src/main/resources/org/drools/lang/DRL.g:1809:2: ( '>' )
+            // src/main/resources/org/drools/lang/DRL.g:1809:4: '>'
             {
             match('>'); if (failed) return ;
 
@@ -1322,8 +1322,8 @@
     public final void mGREATER_EQUAL() throws RecognitionException {
         try {
             int _type = GREATER_EQUAL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1813:2: ( '>=' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1813:4: '>='
+            // src/main/resources/org/drools/lang/DRL.g:1813:2: ( '>=' )
+            // src/main/resources/org/drools/lang/DRL.g:1813:4: '>='
             {
             match(">="); if (failed) return ;
 
@@ -1341,8 +1341,8 @@
     public final void mLESS() throws RecognitionException {
         try {
             int _type = LESS;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1817:2: ( '<' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1817:4: '<'
+            // src/main/resources/org/drools/lang/DRL.g:1817:2: ( '<' )
+            // src/main/resources/org/drools/lang/DRL.g:1817:4: '<'
             {
             match('<'); if (failed) return ;
 
@@ -1359,8 +1359,8 @@
     public final void mLESS_EQUAL() throws RecognitionException {
         try {
             int _type = LESS_EQUAL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1821:2: ( '<=' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1821:4: '<='
+            // src/main/resources/org/drools/lang/DRL.g:1821:2: ( '<=' )
+            // src/main/resources/org/drools/lang/DRL.g:1821:4: '<='
             {
             match("<="); if (failed) return ;
 
@@ -1378,8 +1378,8 @@
     public final void mARROW() throws RecognitionException {
         try {
             int _type = ARROW;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1825:2: ( '->' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1825:4: '->'
+            // src/main/resources/org/drools/lang/DRL.g:1825:2: ( '->' )
+            // src/main/resources/org/drools/lang/DRL.g:1825:4: '->'
             {
             match("->"); if (failed) return ;
 
@@ -1397,7 +1397,7 @@
     public final void mID() throws RecognitionException {
         try {
             int _type = ID;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1829:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )* | '%' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+ '%' )
+            // src/main/resources/org/drools/lang/DRL.g:1829:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )* | '%' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+ '%' )
             int alt16=2;
             int LA16_0 = input.LA(1);
 
@@ -1416,7 +1416,7 @@
             }
             switch (alt16) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1829:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
+                    // src/main/resources/org/drools/lang/DRL.g:1829: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();
@@ -1429,7 +1429,7 @@
                         recover(mse);    throw mse;
                     }
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1829:50: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
+                    // src/main/resources/org/drools/lang/DRL.g:1829:50: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
                     loop14:
                     do {
                         int alt14=2;
@@ -1442,7 +1442,7 @@
 
                         switch (alt14) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:
+                    	    // src/main/resources/org/drools/lang/DRL.g:
                     	    {
                     	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(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();
@@ -1468,7 +1468,7 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1830:4: '%' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+ '%'
+                    // src/main/resources/org/drools/lang/DRL.g:1830:4: '%' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+ '%'
                     {
                     match('%'); if (failed) return ;
                     if ( input.LA(1)=='$'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z')||(input.LA(1)>='\u00C0' && input.LA(1)<='\u00FF') ) {
@@ -1482,7 +1482,7 @@
                         recover(mse);    throw mse;
                     }
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1830:54: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+
+                    // src/main/resources/org/drools/lang/DRL.g:1830:54: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+
                     int cnt15=0;
                     loop15:
                     do {
@@ -1496,7 +1496,7 @@
 
                         switch (alt15) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:
+                    	    // src/main/resources/org/drools/lang/DRL.g:
                     	    {
                     	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(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();
@@ -1543,8 +1543,8 @@
     public final void mLEFT_PAREN() throws RecognitionException {
         try {
             int _type = LEFT_PAREN;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1835:9: ( '(' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1835:11: '('
+            // src/main/resources/org/drools/lang/DRL.g:1835:9: ( '(' )
+            // src/main/resources/org/drools/lang/DRL.g:1835:11: '('
             {
             match('('); if (failed) return ;
 
@@ -1561,8 +1561,8 @@
     public final void mRIGHT_PAREN() throws RecognitionException {
         try {
             int _type = RIGHT_PAREN;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1839:9: ( ')' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1839:11: ')'
+            // src/main/resources/org/drools/lang/DRL.g:1839:9: ( ')' )
+            // src/main/resources/org/drools/lang/DRL.g:1839:11: ')'
             {
             match(')'); if (failed) return ;
 
@@ -1579,8 +1579,8 @@
     public final void mLEFT_SQUARE() throws RecognitionException {
         try {
             int _type = LEFT_SQUARE;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1843:9: ( '[' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1843:11: '['
+            // src/main/resources/org/drools/lang/DRL.g:1843:9: ( '[' )
+            // src/main/resources/org/drools/lang/DRL.g:1843:11: '['
             {
             match('['); if (failed) return ;
 
@@ -1597,8 +1597,8 @@
     public final void mRIGHT_SQUARE() throws RecognitionException {
         try {
             int _type = RIGHT_SQUARE;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1847:9: ( ']' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1847:11: ']'
+            // src/main/resources/org/drools/lang/DRL.g:1847:9: ( ']' )
+            // src/main/resources/org/drools/lang/DRL.g:1847:11: ']'
             {
             match(']'); if (failed) return ;
 
@@ -1615,8 +1615,8 @@
     public final void mLEFT_CURLY() throws RecognitionException {
         try {
             int _type = LEFT_CURLY;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1851:9: ( '{' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1851:11: '{'
+            // src/main/resources/org/drools/lang/DRL.g:1851:9: ( '{' )
+            // src/main/resources/org/drools/lang/DRL.g:1851:11: '{'
             {
             match('{'); if (failed) return ;
 
@@ -1633,8 +1633,8 @@
     public final void mRIGHT_CURLY() throws RecognitionException {
         try {
             int _type = RIGHT_CURLY;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1855:9: ( '}' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1855:11: '}'
+            // src/main/resources/org/drools/lang/DRL.g:1855:9: ( '}' )
+            // src/main/resources/org/drools/lang/DRL.g:1855:11: '}'
             {
             match('}'); if (failed) return ;
 
@@ -1651,8 +1651,8 @@
     public final void mCOMMA() throws RecognitionException {
         try {
             int _type = COMMA;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1858:7: ( ',' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1858:9: ','
+            // src/main/resources/org/drools/lang/DRL.g:1858:7: ( ',' )
+            // src/main/resources/org/drools/lang/DRL.g:1858:9: ','
             {
             match(','); if (failed) return ;
 
@@ -1669,8 +1669,8 @@
     public final void mDOT() throws RecognitionException {
         try {
             int _type = DOT;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1861:5: ( '.' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1861:7: '.'
+            // src/main/resources/org/drools/lang/DRL.g:1861:5: ( '.' )
+            // src/main/resources/org/drools/lang/DRL.g:1861:7: '.'
             {
             match('.'); if (failed) return ;
 
@@ -1687,8 +1687,8 @@
     public final void mDOUBLE_AMPER() throws RecognitionException {
         try {
             int _type = DOUBLE_AMPER;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1865:2: ( '&&' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1865:4: '&&'
+            // src/main/resources/org/drools/lang/DRL.g:1865:2: ( '&&' )
+            // src/main/resources/org/drools/lang/DRL.g:1865:4: '&&'
             {
             match("&&"); if (failed) return ;
 
@@ -1706,8 +1706,8 @@
     public final void mDOUBLE_PIPE() throws RecognitionException {
         try {
             int _type = DOUBLE_PIPE;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1869:2: ( '||' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1869:4: '||'
+            // src/main/resources/org/drools/lang/DRL.g:1869:2: ( '||' )
+            // src/main/resources/org/drools/lang/DRL.g:1869:4: '||'
             {
             match("||"); if (failed) return ;
 
@@ -1725,11 +1725,11 @@
     public final void mSH_STYLE_SINGLE_LINE_COMMENT() throws RecognitionException {
         try {
             int _type = SH_STYLE_SINGLE_LINE_COMMENT;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1873:2: ( '#' ( options {greedy=false; } : . )* EOL )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1873:4: '#' ( options {greedy=false; } : . )* EOL
+            // src/main/resources/org/drools/lang/DRL.g:1873:2: ( '#' ( options {greedy=false; } : . )* EOL )
+            // src/main/resources/org/drools/lang/DRL.g:1873:4: '#' ( options {greedy=false; } : . )* EOL
             {
             match('#'); if (failed) return ;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1873:8: ( options {greedy=false; } : . )*
+            // src/main/resources/org/drools/lang/DRL.g:1873:8: ( options {greedy=false; } : . )*
             loop17:
             do {
                 int alt17=2;
@@ -1748,7 +1748,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1873:35: .
+            	    // src/main/resources/org/drools/lang/DRL.g:1873:35: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -1778,12 +1778,12 @@
     public final void mC_STYLE_SINGLE_LINE_COMMENT() throws RecognitionException {
         try {
             int _type = C_STYLE_SINGLE_LINE_COMMENT;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1879:2: ( '//' ( options {greedy=false; } : . )* EOL )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1879:4: '//' ( options {greedy=false; } : . )* EOL
+            // src/main/resources/org/drools/lang/DRL.g:1879:2: ( '//' ( options {greedy=false; } : . )* EOL )
+            // src/main/resources/org/drools/lang/DRL.g:1879:4: '//' ( options {greedy=false; } : . )* EOL
             {
             match("//"); if (failed) return ;
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1879:9: ( options {greedy=false; } : . )*
+            // src/main/resources/org/drools/lang/DRL.g:1879:9: ( options {greedy=false; } : . )*
             loop18:
             do {
                 int alt18=2;
@@ -1802,7 +1802,7 @@
 
                 switch (alt18) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1879:36: .
+            	    // src/main/resources/org/drools/lang/DRL.g:1879:36: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -1832,12 +1832,12 @@
     public final void mMULTI_LINE_COMMENT() throws RecognitionException {
         try {
             int _type = MULTI_LINE_COMMENT;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1884:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1884:4: '/*' ( options {greedy=false; } : . )* '*/'
+            // src/main/resources/org/drools/lang/DRL.g:1884:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // src/main/resources/org/drools/lang/DRL.g:1884:4: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); if (failed) return ;
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1884:9: ( options {greedy=false; } : . )*
+            // src/main/resources/org/drools/lang/DRL.g:1884:9: ( options {greedy=false; } : . )*
             loop19:
             do {
                 int alt19=2;
@@ -1862,7 +1862,7 @@
 
                 switch (alt19) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1884:35: .
+            	    // src/main/resources/org/drools/lang/DRL.g:1884:35: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -1893,8 +1893,8 @@
     public final void mMISC() throws RecognitionException {
         try {
             int _type = MISC;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1888:7: ( '!' | '$' | '%' | '^' | '*' | '_' | '-' | '+' | '?' | '/' | '\\'' | '\\\\' | '|' | '&' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:
+            // src/main/resources/org/drools/lang/DRL.g:1888:7: ( '!' | '$' | '%' | '^' | '*' | '_' | '-' | '+' | '?' | '/' | '\\'' | '\\\\' | '|' | '&' )
+            // src/main/resources/org/drools/lang/DRL.g:
             {
             if ( input.LA(1)=='!'||(input.LA(1)>='$' && input.LA(1)<='\'')||(input.LA(1)>='*' && input.LA(1)<='+')||input.LA(1)=='-'||input.LA(1)=='/'||input.LA(1)=='?'||input.LA(1)=='\\'||(input.LA(1)>='^' && input.LA(1)<='_')||input.LA(1)=='|' ) {
                 input.consume();
@@ -1918,299 +1918,299 @@
     // $ANTLR end MISC
 
     public void mTokens() throws RecognitionException {
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:8: ( WS | INT | FLOAT | STRING | BOOL | ACCUMULATE | COLLECT | END | FROM | INIT | NULL | OVER | THEN | WHEN | GRAVE_ACCENT | AT | EQUALS | SEMICOLON | DOT_STAR | COLON | EQUAL | NOT_EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | ARROW | ID | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | COMMA | DOT | DOUBLE_AMPER | DOUBLE_PIPE | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | MULTI_LINE_COMMENT | MISC )
+        // src/main/resources/org/drools/lang/DRL.g:1:8: ( WS | INT | FLOAT | STRING | BOOL | ACCUMULATE | COLLECT | END | FROM | INIT | NULL | OVER | THEN | WHEN | GRAVE_ACCENT | AT | EQUALS | SEMICOLON | DOT_STAR | COLON | EQUAL | NOT_EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | ARROW | ID | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | COMMA | DOT | DOUBLE_AMPER | DOUBLE_PIPE | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | MULTI_LINE_COMMENT | MISC )
         int alt20=42;
         alt20 = dfa20.predict(input);
         switch (alt20) {
             case 1 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:10: WS
+                // src/main/resources/org/drools/lang/DRL.g:1:10: WS
                 {
                 mWS(); if (failed) return ;
 
                 }
                 break;
             case 2 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:13: INT
+                // src/main/resources/org/drools/lang/DRL.g:1:13: INT
                 {
                 mINT(); if (failed) return ;
 
                 }
                 break;
             case 3 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:17: FLOAT
+                // src/main/resources/org/drools/lang/DRL.g:1:17: FLOAT
                 {
                 mFLOAT(); if (failed) return ;
 
                 }
                 break;
             case 4 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:23: STRING
+                // src/main/resources/org/drools/lang/DRL.g:1:23: STRING
                 {
                 mSTRING(); if (failed) return ;
 
                 }
                 break;
             case 5 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:30: BOOL
+                // src/main/resources/org/drools/lang/DRL.g:1:30: BOOL
                 {
                 mBOOL(); if (failed) return ;
 
                 }
                 break;
             case 6 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:35: ACCUMULATE
+                // src/main/resources/org/drools/lang/DRL.g:1:35: ACCUMULATE
                 {
                 mACCUMULATE(); if (failed) return ;
 
                 }
                 break;
             case 7 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:46: COLLECT
+                // src/main/resources/org/drools/lang/DRL.g:1:46: COLLECT
                 {
                 mCOLLECT(); if (failed) return ;
 
                 }
                 break;
             case 8 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:54: END
+                // src/main/resources/org/drools/lang/DRL.g:1:54: END
                 {
                 mEND(); if (failed) return ;
 
                 }
                 break;
             case 9 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:58: FROM
+                // src/main/resources/org/drools/lang/DRL.g:1:58: FROM
                 {
                 mFROM(); if (failed) return ;
 
                 }
                 break;
             case 10 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:63: INIT
+                // src/main/resources/org/drools/lang/DRL.g:1:63: INIT
                 {
                 mINIT(); if (failed) return ;
 
                 }
                 break;
             case 11 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:68: NULL
+                // src/main/resources/org/drools/lang/DRL.g:1:68: NULL
                 {
                 mNULL(); if (failed) return ;
 
                 }
                 break;
             case 12 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:73: OVER
+                // src/main/resources/org/drools/lang/DRL.g:1:73: OVER
                 {
                 mOVER(); if (failed) return ;
 
                 }
                 break;
             case 13 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:78: THEN
+                // src/main/resources/org/drools/lang/DRL.g:1:78: THEN
                 {
                 mTHEN(); if (failed) return ;
 
                 }
                 break;
             case 14 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:83: WHEN
+                // src/main/resources/org/drools/lang/DRL.g:1:83: WHEN
                 {
                 mWHEN(); if (failed) return ;
 
                 }
                 break;
             case 15 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:88: GRAVE_ACCENT
+                // src/main/resources/org/drools/lang/DRL.g:1:88: GRAVE_ACCENT
                 {
                 mGRAVE_ACCENT(); if (failed) return ;
 
                 }
                 break;
             case 16 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:101: AT
+                // src/main/resources/org/drools/lang/DRL.g:1:101: AT
                 {
                 mAT(); if (failed) return ;
 
                 }
                 break;
             case 17 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:104: EQUALS
+                // src/main/resources/org/drools/lang/DRL.g:1:104: EQUALS
                 {
                 mEQUALS(); if (failed) return ;
 
                 }
                 break;
             case 18 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:111: SEMICOLON
+                // src/main/resources/org/drools/lang/DRL.g:1:111: SEMICOLON
                 {
                 mSEMICOLON(); if (failed) return ;
 
                 }
                 break;
             case 19 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:121: DOT_STAR
+                // src/main/resources/org/drools/lang/DRL.g:1:121: DOT_STAR
                 {
                 mDOT_STAR(); if (failed) return ;
 
                 }
                 break;
             case 20 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:130: COLON
+                // src/main/resources/org/drools/lang/DRL.g:1:130: COLON
                 {
                 mCOLON(); if (failed) return ;
 
                 }
                 break;
             case 21 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:136: EQUAL
+                // src/main/resources/org/drools/lang/DRL.g:1:136: EQUAL
                 {
                 mEQUAL(); if (failed) return ;
 
                 }
                 break;
             case 22 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:142: NOT_EQUAL
+                // src/main/resources/org/drools/lang/DRL.g:1:142: NOT_EQUAL
                 {
                 mNOT_EQUAL(); if (failed) return ;
 
                 }
                 break;
             case 23 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:152: GREATER
+                // src/main/resources/org/drools/lang/DRL.g:1:152: GREATER
                 {
                 mGREATER(); if (failed) return ;
 
                 }
                 break;
             case 24 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:160: GREATER_EQUAL
+                // src/main/resources/org/drools/lang/DRL.g:1:160: GREATER_EQUAL
                 {
                 mGREATER_EQUAL(); if (failed) return ;
 
                 }
                 break;
             case 25 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:174: LESS
+                // src/main/resources/org/drools/lang/DRL.g:1:174: LESS
                 {
                 mLESS(); if (failed) return ;
 
                 }
                 break;
             case 26 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:179: LESS_EQUAL
+                // src/main/resources/org/drools/lang/DRL.g:1:179: LESS_EQUAL
                 {
                 mLESS_EQUAL(); if (failed) return ;
 
                 }
                 break;
             case 27 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:190: ARROW
+                // src/main/resources/org/drools/lang/DRL.g:1:190: ARROW
                 {
                 mARROW(); if (failed) return ;
 
                 }
                 break;
             case 28 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:196: ID
+                // src/main/resources/org/drools/lang/DRL.g:1:196: ID
                 {
                 mID(); if (failed) return ;
 
                 }
                 break;
             case 29 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:199: LEFT_PAREN
+                // src/main/resources/org/drools/lang/DRL.g:1:199: LEFT_PAREN
                 {
                 mLEFT_PAREN(); if (failed) return ;
 
                 }
                 break;
             case 30 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:210: RIGHT_PAREN
+                // src/main/resources/org/drools/lang/DRL.g:1:210: RIGHT_PAREN
                 {
                 mRIGHT_PAREN(); if (failed) return ;
 
                 }
                 break;
             case 31 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:222: LEFT_SQUARE
+                // src/main/resources/org/drools/lang/DRL.g:1:222: LEFT_SQUARE
                 {
                 mLEFT_SQUARE(); if (failed) return ;
 
                 }
                 break;
             case 32 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:234: RIGHT_SQUARE
+                // src/main/resources/org/drools/lang/DRL.g:1:234: RIGHT_SQUARE
                 {
                 mRIGHT_SQUARE(); if (failed) return ;
 
                 }
                 break;
             case 33 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:247: LEFT_CURLY
+                // src/main/resources/org/drools/lang/DRL.g:1:247: LEFT_CURLY
                 {
                 mLEFT_CURLY(); if (failed) return ;
 
                 }
                 break;
             case 34 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:258: RIGHT_CURLY
+                // src/main/resources/org/drools/lang/DRL.g:1:258: RIGHT_CURLY
                 {
                 mRIGHT_CURLY(); if (failed) return ;
 
                 }
                 break;
             case 35 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:270: COMMA
+                // src/main/resources/org/drools/lang/DRL.g:1:270: COMMA
                 {
                 mCOMMA(); if (failed) return ;
 
                 }
                 break;
             case 36 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:276: DOT
+                // src/main/resources/org/drools/lang/DRL.g:1:276: DOT
                 {
                 mDOT(); if (failed) return ;
 
                 }
                 break;
             case 37 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:280: DOUBLE_AMPER
+                // src/main/resources/org/drools/lang/DRL.g:1:280: DOUBLE_AMPER
                 {
                 mDOUBLE_AMPER(); if (failed) return ;
 
                 }
                 break;
             case 38 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:293: DOUBLE_PIPE
+                // src/main/resources/org/drools/lang/DRL.g:1:293: DOUBLE_PIPE
                 {
                 mDOUBLE_PIPE(); if (failed) return ;
 
                 }
                 break;
             case 39 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:305: SH_STYLE_SINGLE_LINE_COMMENT
+                // src/main/resources/org/drools/lang/DRL.g:1:305: SH_STYLE_SINGLE_LINE_COMMENT
                 {
                 mSH_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
 
                 }
                 break;
             case 40 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:334: C_STYLE_SINGLE_LINE_COMMENT
+                // src/main/resources/org/drools/lang/DRL.g:1:334: C_STYLE_SINGLE_LINE_COMMENT
                 {
                 mC_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
 
                 }
                 break;
             case 41 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:362: MULTI_LINE_COMMENT
+                // src/main/resources/org/drools/lang/DRL.g:1:362: MULTI_LINE_COMMENT
                 {
                 mMULTI_LINE_COMMENT(); if (failed) return ;
 
                 }
                 break;
             case 42 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:381: MISC
+                // src/main/resources/org/drools/lang/DRL.g:1:381: MISC
                 {
                 mMISC(); if (failed) return ;
 
@@ -2223,8 +2223,8 @@
 
     // $ANTLR start synpred1
     public final void synpred1_fragment() throws RecognitionException {   
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1694:14: ( '\\r\\n' )
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1694:16: '\\r\\n'
+        // src/main/resources/org/drools/lang/DRL.g:1694:14: ( '\\r\\n' )
+        // src/main/resources/org/drools/lang/DRL.g:1694:16: '\\r\\n'
         {
         match("\r\n"); if (failed) return ;
 
@@ -2267,29 +2267,29 @@
         "\1\60\1\155\1\145\1\uffff\4\60\2\uffff\1\60\1\uffff\1\165\1\143"+
         "\4\uffff\1\154\1\164\1\141\1\60\1\164\1\uffff\1\145\1\60\1\uffff";
     static final String DFA20_maxS =
-        "\1\u00ff\1\uffff\1\76\1\71\1\uffff\1\ufffe\2\162\1\143\1\157\2\156"+
-        "\1\165\1\166\1\150\2\uffff\1\75\1\uffff\1\52\1\uffff\3\75\1\uffff"+
-        "\1\u00ff\7\uffff\1\46\1\174\1\uffff\1\57\5\uffff\1\165\1\145\1\154"+
-        "\1\157\1\143\1\154\1\144\1\151\1\154\2\145\15\uffff\1\145\1\156"+
-        "\1\163\1\155\1\165\1\154\1\u00ff\1\164\1\154\1\162\1\156\2\u00ff"+
-        "\1\145\1\u00ff\1\155\1\145\1\uffff\4\u00ff\2\uffff\1\u00ff\1\uffff"+
-        "\1\165\1\143\4\uffff\1\154\1\164\1\141\1\u00ff\1\164\1\uffff\1\145"+
-        "\1\u00ff\1\uffff";
+        "\1\u00ff\1\uffff\1\76\1\71\1\uffff\1\ufffe\2\162\1\143\1\157\2"+
+        "\156\1\165\1\166\1\150\2\uffff\1\75\1\uffff\1\52\1\uffff\3\75\1"+
+        "\uffff\1\u00ff\7\uffff\1\46\1\174\1\uffff\1\57\5\uffff\1\165\1\145"+
+        "\1\154\1\157\1\143\1\154\1\144\1\151\1\154\2\145\15\uffff\1\145"+
+        "\1\156\1\163\1\155\1\165\1\154\1\u00ff\1\164\1\154\1\162\1\156\2"+
+        "\u00ff\1\145\1\u00ff\1\155\1\145\1\uffff\4\u00ff\2\uffff\1\u00ff"+
+        "\1\uffff\1\165\1\143\4\uffff\1\154\1\164\1\141\1\u00ff\1\164\1\uffff"+
+        "\1\145\1\u00ff\1\uffff";
     static final String DFA20_acceptS =
         "\1\uffff\1\1\2\uffff\1\4\12\uffff\1\17\1\20\1\uffff\1\22\1\uffff"+
         "\1\24\3\uffff\1\34\1\uffff\1\35\1\36\1\37\1\40\1\41\1\42\1\43\2"+
         "\uffff\1\47\1\uffff\1\34\1\52\1\33\1\2\1\3\13\uffff\1\25\1\21\1"+
-        "\23\1\44\1\26\1\30\1\27\1\32\1\31\1\45\1\46\1\50\1\51\21\uffff\1"+
+        "\23\1\44\1\26\1\30\1\27\1\32\1\31\1\45\1\46\1\51\1\50\21\uffff\1"+
         "\10\4\uffff\1\5\1\15\1\uffff\1\11\2\uffff\1\12\1\13\1\14\1\16\5"+
         "\uffff\1\7\2\uffff\1\6";
     static final String DFA20_specialS =
         "\153\uffff}>";
     static final String[] DFA20_transitionS = {
-            "\2\1\1\uffff\2\1\22\uffff\1\1\1\25\1\4\1\43\1\30\1\31\1\41\1"+
-            "\5\1\32\1\33\2\46\1\40\1\2\1\23\1\44\12\3\1\24\1\22\1\27\1\21"+
-            "\1\26\1\46\1\20\32\45\1\34\1\46\1\35\1\46\1\30\1\17\1\10\1\45"+
-            "\1\11\1\45\1\12\1\7\2\45\1\13\4\45\1\14\1\15\4\45\1\6\2\45\1"+
-            "\16\3\45\1\36\1\42\1\37\102\uffff\100\45",
+            "\2\1\1\uffff\2\1\22\uffff\1\1\1\25\1\4\1\43\1\30\1\31\1\41"+
+            "\1\5\1\32\1\33\2\46\1\40\1\2\1\23\1\44\12\3\1\24\1\22\1\27\1"+
+            "\21\1\26\1\46\1\20\32\45\1\34\1\46\1\35\1\46\1\30\1\17\1\10"+
+            "\1\45\1\11\1\45\1\12\1\7\2\45\1\13\4\45\1\14\1\15\4\45\1\6\2"+
+            "\45\1\16\3\45\1\36\1\42\1\37\102\uffff\100\45",
             "",
             "\12\3\4\uffff\1\47",
             "\1\51\1\uffff\12\3",
@@ -2314,8 +2314,8 @@
             "\1\72",
             "\1\74",
             "",
-            "\1\45\34\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
-            "\45",
+            "\1\45\34\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
+            "\100\45",
             "",
             "",
             "",
@@ -2326,7 +2326,7 @@
             "\1\76",
             "\1\77",
             "",
-            "\1\101\4\uffff\1\100",
+            "\1\100\4\uffff\1\101",
             "",
             "",
             "",
@@ -2362,34 +2362,34 @@
             "\1\120",
             "\1\121",
             "\1\122",
-            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
-            "\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
+            "\100\45",
             "\1\124",
             "\1\125",
             "\1\126",
             "\1\127",
-            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
-            "\45",
-            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
-            "\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
+            "\100\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
+            "\100\45",
             "\1\132",
-            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
-            "\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
+            "\100\45",
             "\1\134",
             "\1\135",
             "",
-            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
-            "\45",
-            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
-            "\45",
-            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
-            "\45",
-            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
-            "\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
+            "\100\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
+            "\100\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
+            "\100\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
+            "\100\45",
             "",
             "",
-            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
-            "\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
+            "\100\45",
             "",
             "\1\142",
             "\1\143",
@@ -2400,13 +2400,13 @@
             "\1\144",
             "\1\145",
             "\1\146",
-            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
-            "\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
+            "\100\45",
             "\1\150",
             "",
             "\1\151",
-            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff\100"+
-            "\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
+            "\100\45",
             ""
     };
 

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2008-10-17 13:03:49 UTC (rev 23496)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2008-10-17 16:23:06 UTC (rev 23497)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2008-09-21 11:30:35
+// $ANTLR 3.0.1 src/main/resources/org/drools/lang/DRL.g 2008-10-16 18:53:58
 
 	package org.drools.lang;
 	
@@ -20,132 +20,132 @@
     public static final String[] tokenNames = new String[] {
         "<invalid>", "<EOR>", "<DOWN>", "<UP>", "VT_COMPILATION_UNIT", "VT_FUNCTION_IMPORT", "VT_FACT", "VT_CONSTRAINTS", "VT_LABEL", "VT_QUERY_ID", "VT_TEMPLATE_ID", "VT_TYPE_DECLARE_ID", "VT_RULE_ID", "VT_ENTRYPOINT_ID", "VT_SLOT_ID", "VT_SLOT", "VT_RULE_ATTRIBUTES", "VT_RHS_CHUNK", "VT_CURLY_CHUNK", "VT_SQUARE_CHUNK", "VT_PAREN_CHUNK", "VT_BEHAVIOR", "VT_AND_IMPLICIT", "VT_AND_PREFIX", "VT_OR_PREFIX", "VT_AND_INFIX", "VT_OR_INFIX", "VT_ACCUMULATE_INIT_CLAUSE", "VT_ACCUMULATE_ID_CLAUSE", "VT_FROM_SOURCE", "VT_EXPRESSION_CHAIN", "VT_PATTERN", "VT_FACT_BINDING", "VT_FACT_OR", "VT_BIND_FIELD", "VT_FIELD", "VT_ACCESSOR_PATH", "VT_ACCESSOR_ELEMENT", "VT_DATA_TYPE", "VT_PATTERN_TYPE", "VT_PACKAGE_ID", "VT_IMPORT_ID", "VT_GLOBAL_ID", "VT_FUNCTION_ID", "VT_PARAM_LIST", "VK_DATE_EFFECTIVE", "VK_DATE_EXPIRES", "VK_LOCK_ON_ACTIVE", "VK_NO_LOOP", "VK_AUTO_FOCUS", "VK_ACTIVATION_GROUP", "VK_AGENDA_GROUP", "VK_RULEFLOW_GROUP", "VK_DURATION", "VK_DIALECT", "VK_SALIENCE", "VK_ENABLED", "!
 VK_ATTRIBUTES", "VK_RULE", "VK_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_ACTION", "VK_REVERSE", "VK_RESULT", "SEMICOLON", "ID", "DOT", "DOT_STAR", "END", "STRING", "LEFT_PAREN", "COMMA", "RIGHT_PAREN", "AT", "COLON", "EQUALS", "WHEN", "BOOL", "INT", "DOUBLE_PIPE", "DOUBLE_AMPER", "FROM", "OVER", "ACCUMULATE", "INIT", "COLLECT", "ARROW", "EQUAL", "GREATER", "GREATER_EQUAL", "LESS", "LESS_EQUAL", "NOT_EQUAL", "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=89;
-    public static final int VT_PATTERN_TYPE=39;
-    public static final int VT_ACCUMULATE_ID_CLAUSE=28;
-    public static final int VK_DIALECT=54;
+    public static final int ACCUMULATE=101;
+    public static final int VT_ACCESSOR_ELEMENT=37;
+    public static final int VT_DATA_TYPE=38;
+    public static final int DOT_STAR=85;
     public static final int VK_FUNCTION=64;
-    public static final int END=86;
-    public static final int HexDigit=123;
-    public static final int VK_ATTRIBUTES=57;
-    public static final int VT_EXPRESSION_CHAIN=30;
-    public static final int MISC=119;
-    public static final int VT_AND_PREFIX=23;
-    public static final int VK_QUERY=62;
-    public static final int THEN=116;
+    public static final int VK_GLOBAL=65;
+    public static final int VK_AND=76;
+    public static final int EQUALS=93;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=126;
     public static final int VK_AUTO_FOCUS=49;
-    public static final int DOT=84;
+    public static final int VK_SALIENCE=55;
+    public static final int EOF=-1;
+    public static final int VT_PATTERN_TYPE=39;
+    public static final int VT_FUNCTION_IMPORT=5;
+    public static final int VT_OR_INFIX=26;
+    public static final int EOL=120;
+    public static final int GREATER=106;
+    public static final int DOUBLE_AMPER=98;
     public static final int VK_IMPORT=59;
+    public static final int NOT_EQUAL=110;
+    public static final int VK_ACTION=79;
+    public static final int VK_RULE=58;
+    public static final int LESS=108;
+    public static final int VK_MEMBEROF=71;
+    public static final int GRAVE_ACCENT=111;
     public static final int VT_SLOT=15;
+    public static final int VK_OR=75;
+    public static final int VT_AND_PREFIX=23;
+    public static final int NULL=113;
+    public static final int BOOL=95;
+    public static final int VK_QUERY=62;
+    public static final int INT=96;
+    public static final int SEMICOLON=82;
+    public static final int VT_FUNCTION_ID=43;
+    public static final int VT_RHS_CHUNK=17;
+    public static final int VT_FACT_BINDING=32;
+    public static final int VK_RULEFLOW_GROUP=52;
+    public static final int VK_ENTRY_POINT=72;
     public static final int VT_PACKAGE_ID=40;
-    public static final int LEFT_SQUARE=114;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=126;
-    public static final int VT_DATA_TYPE=38;
+    public static final int VK_RESULT=81;
+    public static final int VT_LABEL=8;
+    public static final int WS=121;
+    public static final int VK_NO_LOOP=48;
+    public static final int LEFT_CURLY=117;
     public static final int VT_FACT=6;
-    public static final int VK_MATCHES=68;
-    public static final int LEFT_CURLY=117;
-    public static final int AT=91;
-    public static final int DOUBLE_AMPER=98;
+    public static final int VT_PATTERN=31;
+    public static final int VK_IN=74;
     public static final int LEFT_PAREN=88;
-    public static final int VT_QUERY_ID=9;
-    public static final int VT_ACCESSOR_PATH=36;
-    public static final int VT_LABEL=8;
-    public static final int WHEN=94;
-    public static final int VT_ENTRYPOINT_ID=13;
-    public static final int WS=121;
-    public static final int VT_FIELD=35;
-    public static final int VK_SALIENCE=55;
-    public static final int VK_SOUNDSLIKE=70;
-    public static final int OVER=100;
-    public static final int VK_AND=76;
-    public static final int STRING=87;
-    public static final int VT_ACCESSOR_ELEMENT=37;
-    public static final int VT_ACCUMULATE_INIT_CLAUSE=27;
-    public static final int VK_GLOBAL=65;
-    public static final int VK_REVERSE=80;
-    public static final int VT_BEHAVIOR=21;
-    public static final int GRAVE_ACCENT=111;
-    public static final int VK_DURATION=53;
-    public static final int VT_SQUARE_CHUNK=19;
-    public static final int VK_FORALL=78;
-    public static final int VT_PAREN_CHUNK=20;
-    public static final int VT_COMPILATION_UNIT=4;
+    public static final int LESS_EQUAL=109;
+    public static final int VT_IMPORT_ID=41;
+    public static final int VT_RULE_ID=12;
+    public static final int MISC=119;
+    public static final int FROM=99;
+    public static final int END=86;
     public static final int COLLECT=103;
+    public static final int INIT=102;
+    public static final int EscapeSequence=122;
+    public static final int VK_ACTIVATION_GROUP=50;
     public static final int VK_ENABLED=56;
-    public static final int EQUALS=93;
-    public static final int VK_RESULT=81;
-    public static final int UnicodeEscape=124;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=127;
     public static final int VK_PACKAGE=60;
-    public static final int VT_RULE_ID=12;
-    public static final int EQUAL=105;
-    public static final int VK_NO_LOOP=48;
-    public static final int SEMICOLON=82;
-    public static final int VK_TEMPLATE=61;
-    public static final int VT_AND_IMPLICIT=22;
-    public static final int NULL=113;
-    public static final int COLON=92;
-    public static final int MULTI_LINE_COMMENT=128;
-    public static final int VT_RULE_ATTRIBUTES=16;
+    public static final int OVER=100;
     public static final int RIGHT_SQUARE=115;
-    public static final int VK_AGENDA_GROUP=51;
+    public static final int RIGHT_CURLY=118;
+    public static final int VK_MATCHES=68;
     public static final int VT_FACT_OR=33;
-    public static final int VK_NOT=73;
+    public static final int VT_FIELD=35;
+    public static final int FLOAT=112;
+    public static final int VT_ACCUMULATE_ID_CLAUSE=28;
+    public static final int VK_EXISTS=77;
     public static final int VK_DATE_EXPIRES=46;
-    public static final int ARROW=104;
-    public static final int FLOAT=112;
-    public static final int INIT=102;
-    public static final int VT_SLOT_ID=14;
-    public static final int VT_CURLY_CHUNK=18;
+    public static final int ID=83;
+    public static final int HexDigit=123;
     public static final int VT_OR_PREFIX=24;
+    public static final int VK_EVAL=66;
     public static final int DOUBLE_PIPE=97;
-    public static final int LESS=108;
+    public static final int AT=91;
+    public static final int RIGHT_PAREN=90;
+    public static final int THEN=116;
+    public static final int VT_COMPILATION_UNIT=4;
+    public static final int VT_EXPRESSION_CHAIN=30;
+    public static final int COMMA=89;
+    public static final int EQUAL=105;
+    public static final int VT_BEHAVIOR=21;
+    public static final int VT_QUERY_ID=9;
+    public static final int VK_DIALECT=54;
+    public static final int DOT=84;
+    public static final int VT_GLOBAL_ID=42;
+    public static final int VK_NOT=73;
+    public static final int VT_FROM_SOURCE=29;
+    public static final int VT_ENTRYPOINT_ID=13;
+    public static final int VK_DECLARE=63;
+    public static final int VT_PAREN_CHUNK=20;
+    public static final int VK_CONTAINS=67;
     public static final int VT_TYPE_DECLARE_ID=11;
-    public static final int VT_PATTERN=31;
+    public static final int VK_REVERSE=80;
+    public static final int VK_LOCK_ON_ACTIVE=47;
+    public static final int VK_TEMPLATE=61;
+    public static final int VT_AND_INFIX=25;
+    public static final int VT_RULE_ATTRIBUTES=16;
+    public static final int VK_DURATION=53;
+    public static final int VT_ACCESSOR_PATH=36;
+    public static final int MULTI_LINE_COMMENT=128;
+    public static final int VK_FORALL=78;
+    public static final int COLON=92;
+    public static final int VK_EXCLUDES=69;
+    public static final int VT_AND_IMPLICIT=22;
+    public static final int VK_SOUNDSLIKE=70;
+    public static final int VT_ACCUMULATE_INIT_CLAUSE=27;
+    public static final int VT_CURLY_CHUNK=18;
+    public static final int VT_SLOT_ID=14;
+    public static final int VK_ATTRIBUTES=57;
+    public static final int WHEN=94;
+    public static final int UnicodeEscape=124;
+    public static final int VT_SQUARE_CHUNK=19;
+    public static final int VT_TEMPLATE_ID=10;
     public static final int VK_DATE_EFFECTIVE=45;
-    public static final int EscapeSequence=122;
-    public static final int VK_EXISTS=77;
-    public static final int INT=96;
+    public static final int VT_PARAM_LIST=44;
+    public static final int ARROW=104;
     public static final int VT_BIND_FIELD=34;
-    public static final int VK_RULE=58;
-    public static final int VK_EVAL=66;
-    public static final int GREATER=106;
-    public static final int VT_FACT_BINDING=32;
-    public static final int FROM=99;
-    public static final int ID=83;
-    public static final int NOT_EQUAL=110;
-    public static final int RIGHT_CURLY=118;
-    public static final int BOOL=95;
-    public static final int VT_AND_INFIX=25;
-    public static final int VT_PARAM_LIST=44;
-    public static final int VK_ENTRY_POINT=72;
-    public static final int VT_FROM_SOURCE=29;
-    public static final int VK_LOCK_ON_ACTIVE=47;
-    public static final int VK_CONTAINS=67;
-    public static final int VT_FUNCTION_IMPORT=5;
-    public static final int VK_IN=74;
-    public static final int VT_RHS_CHUNK=17;
-    public static final int GREATER_EQUAL=107;
-    public static final int VK_MEMBEROF=71;
-    public static final int VT_OR_INFIX=26;
-    public static final int DOT_STAR=85;
-    public static final int VK_OR=75;
-    public static final int VT_GLOBAL_ID=42;
-    public static final int LESS_EQUAL=109;
-    public static final int ACCUMULATE=101;
-    public static final int VK_RULEFLOW_GROUP=52;
-    public static final int VT_FUNCTION_ID=43;
-    public static final int EOF=-1;
     public static final int VT_CONSTRAINTS=7;
-    public static final int EOL=120;
-    public static final int VT_IMPORT_ID=41;
-    public static final int VK_ACTIVATION_GROUP=50;
+    public static final int VK_AGENDA_GROUP=51;
+    public static final int LEFT_SQUARE=114;
     public static final int OctalEscape=125;
-    public static final int VK_ACTION=79;
-    public static final int VK_EXCLUDES=69;
-    public static final int RIGHT_PAREN=90;
-    public static final int VT_TEMPLATE_ID=10;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=127;
-    public static final int VK_DECLARE=63;
+    public static final int GREATER_EQUAL=107;
+    public static final int STRING=87;
 
         public DRLParser(TokenStream input) {
             super(input);
@@ -162,7 +162,7 @@
     }
 
     public String[] getTokenNames() { return tokenNames; }
-    public String getGrammarFileName() { return "/Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g"; }
+    public String getGrammarFileName() { return "src/main/resources/org/drools/lang/DRL.g"; }
 
 
     	private Stack<Map<DroolsParaphraseTypes, String>> paraphrases = new Stack<Map<DroolsParaphraseTypes, String>>();
@@ -433,7 +433,7 @@
     };
 
     // $ANTLR start compilation_unit
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:395:1: compilation_unit : ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) ;
+    // src/main/resources/org/drools/lang/DRL.g:395:1: compilation_unit : ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) ;
     public final compilation_unit_return compilation_unit() throws RecognitionException {
         compilation_unit_return retval = new compilation_unit_return();
         retval.start = input.LT(1);
@@ -448,21 +448,21 @@
 
         Object EOF3_tree=null;
         RewriteRuleTokenStream stream_EOF=new RewriteRuleTokenStream(adaptor,"token EOF");
+        RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
         RewriteRuleSubtreeStream stream_package_statement=new RewriteRuleSubtreeStream(adaptor,"rule package_statement");
-        RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:396:2: ( ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:396:4: ( package_statement )? ( statement )* EOF
+            // src/main/resources/org/drools/lang/DRL.g:396:2: ( ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) )
+            // src/main/resources/org/drools/lang/DRL.g:396:4: ( package_statement )? ( statement )* EOF
             {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:396:4: ( package_statement )?
+            // src/main/resources/org/drools/lang/DRL.g:396:4: ( package_statement )?
             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, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "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))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(valid!
 ateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(
DroolsSoftKeywords.PACKAGE))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||((validateLT(1, DroolsSoftKeywords.DECLARE!
 ))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(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) && ((((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||((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, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT!
 (1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, D!
 roolsSoftKeywords.GROUP))||((validateLT(1, DroolsSoftKeywords.TEMPLATE
))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))||(validateIdentifierKey(DroolsSoftKeywords.PACKAGE))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||(validateIdentifierKey(Drool!
 sSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))) {
                 int LA1_1 = input.LA(2);
 
-                if ( (LA1_1==ID) && ((((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateL!
 T(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.PACKAGE))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSof!
 tKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLA
TE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||((validateLT(1, Dro!
 olsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSo!
 ftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(
validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))))) {
-                    int LA1_4 = input.LA(3);
+                if ( (LA1_1==ID) && ((((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "import") && validateLT(2,!
  "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMP!
 LATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((valid
ateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(valida!
 teIdentifierKey(DroolsSoftKeywords.QUERY))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.PACKAGE))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||((validateLT(1, Droo!
 lsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DE
CLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))))) {
+                    int LA1_5 = input.LA(3);
 
                     if ( ((validateIdentifierKey(DroolsSoftKeywords.PACKAGE))) ) {
                         alt1=1;
@@ -471,7 +471,7 @@
             }
             switch (alt1) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:396:4: package_statement
+                    // src/main/resources/org/drools/lang/DRL.g:396:4: package_statement
                     {
                     pushFollow(FOLLOW_package_statement_in_compilation_unit388);
                     package_statement1=package_statement();
@@ -484,20 +484,20 @@
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:397:3: ( statement )*
+            // src/main/resources/org/drools/lang/DRL.g:397:3: ( statement )*
             loop2:
             do {
                 int alt2=2;
                 int LA2_0 = input.LA(1);
 
-                if ( (LA2_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(valid!
 ateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(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.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.L!
 OOP))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))) {
                     alt2=1;
                 }
 
 
                 switch (alt2) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:397:3: statement
+            	    // src/main/resources/org/drools/lang/DRL.g:397:3: statement
             	    {
             	    pushFollow(FOLLOW_statement_in_compilation_unit393);
             	    statement2=statement();
@@ -531,18 +531,18 @@
             root_0 = (Object)adaptor.nil();
             // 399:3: -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:399:6: ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
+                // src/main/resources/org/drools/lang/DRL.g:399:6: ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_COMPILATION_UNIT, "VT_COMPILATION_UNIT"), root_1);
 
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:399:28: ( package_statement )?
+                // src/main/resources/org/drools/lang/DRL.g:399:28: ( package_statement )?
                 if ( stream_package_statement.hasNext() ) {
                     adaptor.addChild(root_1, stream_package_statement.next());
 
                 }
                 stream_package_statement.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:399:47: ( statement )*
+                // src/main/resources/org/drools/lang/DRL.g:399:47: ( statement )*
                 while ( stream_statement.hasNext() ) {
                     adaptor.addChild(root_1, stream_statement.next());
 
@@ -615,7 +615,7 @@
     };
 
     // $ANTLR start package_statement
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:436:1: package_statement : package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) ;
+    // src/main/resources/org/drools/lang/DRL.g:436:1: package_statement : package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) ;
     public final package_statement_return package_statement() throws RecognitionException {
         package_statement_return retval = new package_statement_return();
         retval.start = input.LT(1);
@@ -634,8 +634,8 @@
         RewriteRuleSubtreeStream stream_package_id=new RewriteRuleSubtreeStream(adaptor,"rule package_id");
          pushParaphrases(DroolsParaphraseTypes.PACKAGE); 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:439:2: ( package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:440:2: package_key package_id ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:439:2: ( package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) )
+            // src/main/resources/org/drools/lang/DRL.g:440:2: package_key package_id ( SEMICOLON )?
             {
             if ( backtracking==0 ) {
               	beginSentence(DroolsSentenceType.PACKAGE);	
@@ -650,7 +650,7 @@
             _fsp--;
             if (failed) return retval;
             if ( backtracking==0 ) stream_package_id.add(package_id5.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:442:14: ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:442:14: ( SEMICOLON )?
             int alt3=2;
             int LA3_0 = input.LA(1);
 
@@ -659,7 +659,7 @@
             }
             switch (alt3) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:442:14: SEMICOLON
+                    // src/main/resources/org/drools/lang/DRL.g:442:14: SEMICOLON
                     {
                     SEMICOLON6=(Token)input.LT(1);
                     match(input,SEMICOLON,FOLLOW_SEMICOLON_in_package_statement464); if (failed) return retval;
@@ -688,7 +688,7 @@
             root_0 = (Object)adaptor.nil();
             // 444:3: -> ^( package_key package_id )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:444:6: ^( package_key package_id )
+                // src/main/resources/org/drools/lang/DRL.g:444:6: ^( package_key package_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_package_key.nextNode(), root_1);
@@ -730,7 +730,7 @@
     };
 
     // $ANTLR start package_id
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:447:1: package_id : id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) ;
+    // src/main/resources/org/drools/lang/DRL.g:447:1: package_id : id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) ;
     public final package_id_return package_id() throws RecognitionException {
         package_id_return retval = new package_id_return();
         retval.start = input.LT(1);
@@ -745,8 +745,8 @@
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:448:2: (id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:448:4: id+= ID (id+= DOT id+= ID )*
+            // src/main/resources/org/drools/lang/DRL.g:448:2: (id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) )
+            // src/main/resources/org/drools/lang/DRL.g:448:4: id+= ID (id+= DOT id+= ID )*
             {
             id=(Token)input.LT(1);
             match(input,ID,FOLLOW_ID_in_package_id491); if (failed) return retval;
@@ -755,7 +755,7 @@
             if (list_id==null) list_id=new ArrayList();
             list_id.add(id);
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:448:11: (id+= DOT id+= ID )*
+            // src/main/resources/org/drools/lang/DRL.g:448:11: (id+= DOT id+= ID )*
             loop4:
             do {
                 int alt4=2;
@@ -768,7 +768,7 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:448:13: id+= DOT id+= ID
+            	    // src/main/resources/org/drools/lang/DRL.g:448:13: id+= DOT id+= ID
             	    {
             	    id=(Token)input.LT(1);
             	    match(input,DOT,FOLLOW_DOT_in_package_id497); if (failed) return retval;
@@ -811,7 +811,7 @@
             root_0 = (Object)adaptor.nil();
             // 451:3: -> ^( VT_PACKAGE_ID ( ID )+ )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:451:6: ^( VT_PACKAGE_ID ( ID )+ )
+                // src/main/resources/org/drools/lang/DRL.g:451:6: ^( VT_PACKAGE_ID ( ID )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_PACKAGE_ID, "VT_PACKAGE_ID"), root_1);
@@ -857,7 +857,7 @@
     };
 
     // $ANTLR start statement
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:454:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );
+    // src/main/resources/org/drools/lang/DRL.g:454:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );
     public final statement_return statement() throws RecognitionException {
         statement_return retval = new statement_return();
         retval.start = input.LT(1);
@@ -885,17 +885,17 @@
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:457:3: ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query )
+            // src/main/resources/org/drools/lang/DRL.g:457:3: ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query )
             int alt5=9;
             int LA5_0 = input.LA(1);
 
-            if ( (LA5_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((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, "-") && vali!
 dateLT(3, DroolsSoftKeywords.EXPIRES))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||(validateIdentifie!
 rKey(DroolsSoftKeywords.GLOBAL))||((validateLT(1, DroolsSoftKeywords.T
EMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKe!
 ywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))) {
+            if ( (LA5_0==ID) && ((((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(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)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.AGENDA)!
  && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(v
alidateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && valida!
 teLT(3, DroolsSoftKeywords.LOOP))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))))) {
                 int LA5_1 = input.LA(2);
 
-                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))))) {
+                if ( (LA5_1==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-")!
  && validateLT(3, DroolsSoftKeywords.EFFECTIVE))))) {
                     alt5=1;
                 }
-                else if ( (LA5_1==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, Dr!
 oolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TE!
 MPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((val
idateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(Drool!
 sSoftKeywords.TEMPLATE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEM!
 PLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((vali
dateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))) {
+                else if ( (LA5_1==ID) && ((((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSof!
 tKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.Q!
 UERY))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentif
ierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifie!
 rKey(DroolsSoftKeywords.IMPORT))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftK!
 eywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE))
)||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))||((validateLT(1, DroolsSoftKeywords.DECLARE))&&(validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))) {
                     int LA5_3 = input.LA(3);
 
                     if ( (((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) ) {
@@ -930,7 +930,7 @@
                         throw nvae;
                     }
                 }
-                else if ( (LA5_1==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, Drool!
 sSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))))) {
+                else if ( (LA5_1==STRING) && ((((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(Drool!
 sSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))&&(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))))) {
                     int LA5_4 = input.LA(3);
 
                     if ( ((validateIdentifierKey(DroolsSoftKeywords.DIALECT))) ) {
@@ -979,7 +979,7 @@
             }
             switch (alt5) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:458:2: rule_attribute
+                    // src/main/resources/org/drools/lang/DRL.g:458:2: rule_attribute
                     {
                     root_0 = (Object)adaptor.nil();
 
@@ -995,7 +995,7 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:460:3: {...}? => function_import_statement
+                    // src/main/resources/org/drools/lang/DRL.g:460:3: {...}? => function_import_statement
                     {
                     root_0 = (Object)adaptor.nil();
 
@@ -1012,7 +1012,7 @@
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:461:4: import_statement
+                    // src/main/resources/org/drools/lang/DRL.g:461:4: import_statement
                     {
                     root_0 = (Object)adaptor.nil();
 
@@ -1025,7 +1025,7 @@
                     }
                     break;
                 case 4 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:462:4: global
+                    // src/main/resources/org/drools/lang/DRL.g:462:4: global
                     {
                     root_0 = (Object)adaptor.nil();
 
@@ -1038,7 +1038,7 @@
                     }
                     break;
                 case 5 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:463:4: function
+                    // src/main/resources/org/drools/lang/DRL.g:463:4: function
                     {
                     root_0 = (Object)adaptor.nil();
 
@@ -1051,7 +1051,7 @@
                     }
                     break;
                 case 6 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:464:4: {...}? => template
+                    // src/main/resources/org/drools/lang/DRL.g:464:4: {...}? => template
                     {
                     root_0 = (Object)adaptor.nil();
 
@@ -1068,7 +1068,7 @@
                     }
                     break;
                 case 7 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:465:4: {...}? => type_declaration
+                    // src/main/resources/org/drools/lang/DRL.g:465:4: {...}? => type_declaration
                     {
                     root_0 = (Object)adaptor.nil();
 
@@ -1085,7 +1085,7 @@
                     }
                     break;
                 case 8 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:466:4: rule
+                    // src/main/resources/org/drools/lang/DRL.g:466:4: rule
                     {
                     root_0 = (Object)adaptor.nil();
 
@@ -1098,7 +1098,7 @@
                     }
                     break;
                 case 9 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:467:4: query
+                    // src/main/resources/org/drools/lang/DRL.g:467:4: query
                     {
                     root_0 = (Object)adaptor.nil();
 
@@ -1135,7 +1135,7 @@
     };
 
     // $ANTLR start import_statement
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:470:1: import_statement : import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) ;
+    // src/main/resources/org/drools/lang/DRL.g:470:1: import_statement : import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) ;
     public final import_statement_return import_statement() throws RecognitionException {
         import_statement_return retval = new import_statement_return();
         retval.start = input.LT(1);
@@ -1154,8 +1154,8 @@
         RewriteRuleSubtreeStream stream_import_name=new RewriteRuleSubtreeStream(adaptor,"rule import_name");
          pushParaphrases(DroolsParaphraseTypes.IMPORT); 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:473:2: ( import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:474:2: import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:473:2: ( import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) )
+            // src/main/resources/org/drools/lang/DRL.g:474:2: import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )?
             {
             if ( backtracking==0 ) {
               	beginSentence(DroolsSentenceType.IMPORT_STATEMENT);	
@@ -1170,7 +1170,7 @@
             _fsp--;
             if (failed) return retval;
             if ( backtracking==0 ) stream_import_name.add(import_name17.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:475:56: ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:475:56: ( SEMICOLON )?
             int alt6=2;
             int LA6_0 = input.LA(1);
 
@@ -1179,7 +1179,7 @@
             }
             switch (alt6) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:475:56: SEMICOLON
+                    // src/main/resources/org/drools/lang/DRL.g:475:56: SEMICOLON
                     {
                     SEMICOLON18=(Token)input.LT(1);
                     match(input,SEMICOLON,FOLLOW_SEMICOLON_in_import_statement628); if (failed) return retval;
@@ -1196,7 +1196,7 @@
             }
 
             // AST REWRITE
-            // elements: import_name, import_key
+            // elements: import_key, import_name
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -1208,7 +1208,7 @@
             root_0 = (Object)adaptor.nil();
             // 477:3: -> ^( import_key import_name )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:477:6: ^( import_key import_name )
+                // src/main/resources/org/drools/lang/DRL.g:477:6: ^( import_key import_name )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_import_key.nextNode(), root_1);
@@ -1250,7 +1250,7 @@
     };
 
     // $ANTLR start function_import_statement
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:480:1: function_import_statement : imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )? -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name ) ;
+    // src/main/resources/org/drools/lang/DRL.g:480:1: function_import_statement : imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )? -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name ) ;
     public final function_import_statement_return function_import_statement() throws RecognitionException {
         function_import_statement_return retval = new function_import_statement_return();
         retval.start = input.LT(1);
@@ -1267,13 +1267,13 @@
 
         Object SEMICOLON21_tree=null;
         RewriteRuleTokenStream stream_SEMICOLON=new RewriteRuleTokenStream(adaptor,"token SEMICOLON");
+        RewriteRuleSubtreeStream stream_function_key=new RewriteRuleSubtreeStream(adaptor,"rule function_key");
         RewriteRuleSubtreeStream stream_import_key=new RewriteRuleSubtreeStream(adaptor,"rule import_key");
-        RewriteRuleSubtreeStream stream_function_key=new RewriteRuleSubtreeStream(adaptor,"rule function_key");
         RewriteRuleSubtreeStream stream_import_name=new RewriteRuleSubtreeStream(adaptor,"rule import_name");
          pushParaphrases(DroolsParaphraseTypes.FUNCTION_IMPORT); 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:483:2: (imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )? -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:484:2: imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:483:2: (imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )? -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name ) )
+            // src/main/resources/org/drools/lang/DRL.g:484:2: imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )?
             {
             if ( backtracking==0 ) {
               	beginSentence(DroolsSentenceType.FUNCTION_IMPORT_STATEMENT);	
@@ -1293,7 +1293,7 @@
             _fsp--;
             if (failed) return retval;
             if ( backtracking==0 ) stream_import_name.add(import_name20.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:485:82: ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:485:82: ( SEMICOLON )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -1302,7 +1302,7 @@
             }
             switch (alt7) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:485:82: SEMICOLON
+                    // src/main/resources/org/drools/lang/DRL.g:485:82: SEMICOLON
                     {
                     SEMICOLON21=(Token)input.LT(1);
                     match(input,SEMICOLON,FOLLOW_SEMICOLON_in_function_import_statement678); if (failed) return retval;
@@ -1331,7 +1331,7 @@
             root_0 = (Object)adaptor.nil();
             // 487:3: -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:487:6: ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
+                // src/main/resources/org/drools/lang/DRL.g:487:6: ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_FUNCTION_IMPORT, ((Token)imp.start)), root_1);
@@ -1374,7 +1374,7 @@
     };
 
     // $ANTLR start import_name
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:490:1: import_name[DroolsParaphraseTypes importType] : id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) ;
+    // src/main/resources/org/drools/lang/DRL.g:490:1: import_name[DroolsParaphraseTypes importType] : id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) ;
     public final import_name_return import_name(DroolsParaphraseTypes importType) throws RecognitionException {
         import_name_return retval = new import_name_return();
         retval.start = input.LT(1);
@@ -1385,13 +1385,13 @@
         List list_id=null;
 
         Object id_tree=null;
-        RewriteRuleTokenStream stream_DOT_STAR=new RewriteRuleTokenStream(adaptor,"token DOT_STAR");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
+        RewriteRuleTokenStream stream_DOT_STAR=new RewriteRuleTokenStream(adaptor,"token DOT_STAR");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:491:2: (id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:491:4: id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )?
+            // src/main/resources/org/drools/lang/DRL.g:491:2: (id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) )
+            // src/main/resources/org/drools/lang/DRL.g:491:4: id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )?
             {
             id=(Token)input.LT(1);
             match(input,ID,FOLLOW_ID_in_import_name712); if (failed) return retval;
@@ -1400,7 +1400,7 @@
             if (list_id==null) list_id=new ArrayList();
             list_id.add(id);
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:491:11: (id+= DOT id+= ID )*
+            // src/main/resources/org/drools/lang/DRL.g:491:11: (id+= DOT id+= ID )*
             loop8:
             do {
                 int alt8=2;
@@ -1413,7 +1413,7 @@
 
                 switch (alt8) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:491:13: id+= DOT id+= ID
+            	    // src/main/resources/org/drools/lang/DRL.g:491:13: id+= DOT id+= ID
             	    {
             	    id=(Token)input.LT(1);
             	    match(input,DOT,FOLLOW_DOT_in_import_name718); if (failed) return retval;
@@ -1438,7 +1438,7 @@
                 }
             } while (true);
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:491:33: (id+= DOT_STAR )?
+            // src/main/resources/org/drools/lang/DRL.g:491:33: (id+= DOT_STAR )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -1447,7 +1447,7 @@
             }
             switch (alt9) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:491:33: id+= DOT_STAR
+                    // src/main/resources/org/drools/lang/DRL.g:491:33: id+= DOT_STAR
                     {
                     id=(Token)input.LT(1);
                     match(input,DOT_STAR,FOLLOW_DOT_STAR_in_import_name729); if (failed) return retval;
@@ -1480,7 +1480,7 @@
             root_0 = (Object)adaptor.nil();
             // 494:3: -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:494:6: ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
+                // src/main/resources/org/drools/lang/DRL.g:494:6: ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_IMPORT_ID, "VT_IMPORT_ID"), root_1);
@@ -1493,7 +1493,7 @@
 
                 }
                 stream_ID.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:494:25: ( DOT_STAR )?
+                // src/main/resources/org/drools/lang/DRL.g:494:25: ( DOT_STAR )?
                 if ( stream_DOT_STAR.hasNext() ) {
                     adaptor.addChild(root_1, stream_DOT_STAR.next());
 
@@ -1532,7 +1532,7 @@
     };
 
     // $ANTLR start global
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:497:1: global : global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) ;
+    // src/main/resources/org/drools/lang/DRL.g:497:1: global : global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) ;
     public final global_return global() throws RecognitionException {
         global_return retval = new global_return();
         retval.start = input.LT(1);
@@ -1549,13 +1549,13 @@
 
         Object SEMICOLON25_tree=null;
         RewriteRuleTokenStream stream_SEMICOLON=new RewriteRuleTokenStream(adaptor,"token SEMICOLON");
+        RewriteRuleSubtreeStream stream_global_key=new RewriteRuleSubtreeStream(adaptor,"rule global_key");
         RewriteRuleSubtreeStream stream_data_type=new RewriteRuleSubtreeStream(adaptor,"rule data_type");
         RewriteRuleSubtreeStream stream_global_id=new RewriteRuleSubtreeStream(adaptor,"rule global_id");
-        RewriteRuleSubtreeStream stream_global_key=new RewriteRuleSubtreeStream(adaptor,"rule global_key");
          pushParaphrases(DroolsParaphraseTypes.GLOBAL); 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:500:2: ( global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:501:2: global_key data_type global_id ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:500:2: ( global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) )
+            // src/main/resources/org/drools/lang/DRL.g:501:2: global_key data_type global_id ( SEMICOLON )?
             {
             if ( backtracking==0 ) {
               	beginSentence(DroolsSentenceType.GLOBAL);	
@@ -1575,7 +1575,7 @@
             _fsp--;
             if (failed) return retval;
             if ( backtracking==0 ) stream_global_id.add(global_id24.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:502:34: ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:502:34: ( SEMICOLON )?
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -1584,7 +1584,7 @@
             }
             switch (alt10) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:502:34: SEMICOLON
+                    // src/main/resources/org/drools/lang/DRL.g:502:34: SEMICOLON
                     {
                     SEMICOLON25=(Token)input.LT(1);
                     match(input,SEMICOLON,FOLLOW_SEMICOLON_in_global780); if (failed) return retval;
@@ -1601,7 +1601,7 @@
             }
 
             // AST REWRITE
-            // elements: global_key, data_type, global_id
+            // elements: global_key, global_id, data_type
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -1613,7 +1613,7 @@
             root_0 = (Object)adaptor.nil();
             // 504:3: -> ^( global_key data_type global_id )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:504:6: ^( global_key data_type global_id )
+                // src/main/resources/org/drools/lang/DRL.g:504:6: ^( global_key data_type global_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_global_key.nextNode(), root_1);
@@ -1656,7 +1656,7 @@
     };
 
     // $ANTLR start global_id
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:507:1: global_id : id= ID -> VT_GLOBAL_ID[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:507:1: global_id : id= ID -> VT_GLOBAL_ID[$id] ;
     public final global_id_return global_id() throws RecognitionException {
         global_id_return retval = new global_id_return();
         retval.start = input.LT(1);
@@ -1669,8 +1669,8 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:508:2: (id= ID -> VT_GLOBAL_ID[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:508:4: id= ID
+            // src/main/resources/org/drools/lang/DRL.g:508:2: (id= ID -> VT_GLOBAL_ID[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:508:4: id= ID
             {
             id=(Token)input.LT(1);
             match(input,ID,FOLLOW_ID_in_global_id809); if (failed) return retval;
@@ -1725,7 +1725,7 @@
     };
 
     // $ANTLR start function
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:514:1: function : function_key ( data_type )? function_id parameters curly_chunk -> ^( function_key ( data_type )? function_id parameters curly_chunk ) ;
+    // src/main/resources/org/drools/lang/DRL.g:514:1: function : function_key ( data_type )? function_id parameters curly_chunk -> ^( function_key ( data_type )? function_id parameters curly_chunk ) ;
     public final function_return function() throws RecognitionException {
         function_return retval = new function_return();
         retval.start = input.LT(1);
@@ -1743,15 +1743,15 @@
         curly_chunk_return curly_chunk30 = null;
 
 
+        RewriteRuleSubtreeStream stream_function_key=new RewriteRuleSubtreeStream(adaptor,"rule function_key");
+        RewriteRuleSubtreeStream stream_function_id=new RewriteRuleSubtreeStream(adaptor,"rule function_id");
+        RewriteRuleSubtreeStream stream_data_type=new RewriteRuleSubtreeStream(adaptor,"rule data_type");
         RewriteRuleSubtreeStream stream_parameters=new RewriteRuleSubtreeStream(adaptor,"rule parameters");
-        RewriteRuleSubtreeStream stream_function_key=new RewriteRuleSubtreeStream(adaptor,"rule function_key");
         RewriteRuleSubtreeStream stream_curly_chunk=new RewriteRuleSubtreeStream(adaptor,"rule curly_chunk");
-        RewriteRuleSubtreeStream stream_data_type=new RewriteRuleSubtreeStream(adaptor,"rule data_type");
-        RewriteRuleSubtreeStream stream_function_id=new RewriteRuleSubtreeStream(adaptor,"rule function_id");
          pushParaphrases(DroolsParaphraseTypes.FUNCTION); 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:517:2: ( function_key ( data_type )? function_id parameters curly_chunk -> ^( function_key ( data_type )? function_id parameters curly_chunk ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:518:2: function_key ( data_type )? function_id parameters curly_chunk
+            // src/main/resources/org/drools/lang/DRL.g:517:2: ( function_key ( data_type )? function_id parameters curly_chunk -> ^( function_key ( data_type )? function_id parameters curly_chunk ) )
+            // src/main/resources/org/drools/lang/DRL.g:518:2: function_key ( data_type )? function_id parameters curly_chunk
             {
             if ( backtracking==0 ) {
               	beginSentence(DroolsSentenceType.FUNCTION);	
@@ -1761,7 +1761,7 @@
             _fsp--;
             if (failed) return retval;
             if ( backtracking==0 ) stream_function_key.add(function_key26.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:519:16: ( data_type )?
+            // src/main/resources/org/drools/lang/DRL.g:519:16: ( data_type )?
             int alt11=2;
             int LA11_0 = input.LA(1);
 
@@ -1774,7 +1774,7 @@
             }
             switch (alt11) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:519:16: data_type
+                    // src/main/resources/org/drools/lang/DRL.g:519:16: data_type
                     {
                     pushFollow(FOLLOW_data_type_in_function848);
                     data_type27=data_type();
@@ -1804,7 +1804,7 @@
             if ( backtracking==0 ) stream_curly_chunk.add(curly_chunk30.getTree());
 
             // AST REWRITE
-            // elements: function_key, data_type, function_id, curly_chunk, parameters
+            // elements: data_type, function_key, parameters, function_id, curly_chunk
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -1816,12 +1816,12 @@
             root_0 = (Object)adaptor.nil();
             // 520:3: -> ^( function_key ( data_type )? function_id parameters curly_chunk )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:520:6: ^( function_key ( data_type )? function_id parameters curly_chunk )
+                // src/main/resources/org/drools/lang/DRL.g:520:6: ^( function_key ( data_type )? function_id parameters curly_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_function_key.nextNode(), root_1);
 
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:520:21: ( data_type )?
+                // src/main/resources/org/drools/lang/DRL.g:520:21: ( data_type )?
                 if ( stream_data_type.hasNext() ) {
                     adaptor.addChild(root_1, stream_data_type.next());
 
@@ -1866,7 +1866,7 @@
     };
 
     // $ANTLR start function_id
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:523:1: function_id : id= ID -> VT_FUNCTION_ID[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:523:1: function_id : id= ID -> VT_FUNCTION_ID[$id] ;
     public final function_id_return function_id() throws RecognitionException {
         function_id_return retval = new function_id_return();
         retval.start = input.LT(1);
@@ -1879,8 +1879,8 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:524:2: (id= ID -> VT_FUNCTION_ID[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:524:4: id= ID
+            // src/main/resources/org/drools/lang/DRL.g:524:2: (id= ID -> VT_FUNCTION_ID[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:524:4: id= ID
             {
             id=(Token)input.LT(1);
             match(input,ID,FOLLOW_ID_in_function_id885); if (failed) return retval;
@@ -1935,7 +1935,7 @@
     };
 
     // $ANTLR start query
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:530:1: query : query_key query_id ( parameters )? normal_lhs_block END ( SEMICOLON )? -> ^( query_key query_id ( parameters )? normal_lhs_block END ) ;
+    // src/main/resources/org/drools/lang/DRL.g:530:1: query : query_key query_id ( parameters )? normal_lhs_block END ( SEMICOLON )? -> ^( query_key query_id ( parameters )? normal_lhs_block END ) ;
     public final query_return query() throws RecognitionException {
         query_return retval = new query_return();
         retval.start = input.LT(1);
@@ -1955,16 +1955,16 @@
 
         Object END35_tree=null;
         Object SEMICOLON36_tree=null;
+        RewriteRuleTokenStream stream_SEMICOLON=new RewriteRuleTokenStream(adaptor,"token SEMICOLON");
         RewriteRuleTokenStream stream_END=new RewriteRuleTokenStream(adaptor,"token END");
-        RewriteRuleTokenStream stream_SEMICOLON=new RewriteRuleTokenStream(adaptor,"token SEMICOLON");
-        RewriteRuleSubtreeStream stream_parameters=new RewriteRuleSubtreeStream(adaptor,"rule parameters");
         RewriteRuleSubtreeStream stream_query_key=new RewriteRuleSubtreeStream(adaptor,"rule query_key");
         RewriteRuleSubtreeStream stream_normal_lhs_block=new RewriteRuleSubtreeStream(adaptor,"rule normal_lhs_block");
+        RewriteRuleSubtreeStream stream_parameters=new RewriteRuleSubtreeStream(adaptor,"rule parameters");
         RewriteRuleSubtreeStream stream_query_id=new RewriteRuleSubtreeStream(adaptor,"rule query_id");
          pushParaphrases(DroolsParaphraseTypes.QUERY); 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:533:2: ( query_key query_id ( parameters )? normal_lhs_block END ( SEMICOLON )? -> ^( query_key query_id ( parameters )? normal_lhs_block END ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:534:2: query_key query_id ( parameters )? normal_lhs_block END ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:533:2: ( query_key query_id ( parameters )? normal_lhs_block END ( SEMICOLON )? -> ^( query_key query_id ( parameters )? normal_lhs_block END ) )
+            // src/main/resources/org/drools/lang/DRL.g:534:2: query_key query_id ( parameters )? normal_lhs_block END ( SEMICOLON )?
             {
             if ( backtracking==0 ) {
               	beginSentence(DroolsSentenceType.QUERY);	
@@ -1982,12 +1982,12 @@
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:537:3: ( parameters )?
+            // src/main/resources/org/drools/lang/DRL.g:537:3: ( parameters )?
             int alt12=2;
             alt12 = dfa12.predict(input);
             switch (alt12) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:537:3: parameters
+                    // src/main/resources/org/drools/lang/DRL.g:537:3: parameters
                     {
                     pushFollow(FOLLOW_parameters_in_query932);
                     parameters33=parameters();
@@ -2012,7 +2012,7 @@
             match(input,END,FOLLOW_END_in_query946); if (failed) return retval;
             if ( backtracking==0 ) stream_END.add(END35);
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:540:7: ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:540:7: ( SEMICOLON )?
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -2021,7 +2021,7 @@
             }
             switch (alt13) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:540:7: SEMICOLON
+                    // src/main/resources/org/drools/lang/DRL.g:540:7: SEMICOLON
                     {
                     SEMICOLON36=(Token)input.LT(1);
                     match(input,SEMICOLON,FOLLOW_SEMICOLON_in_query948); if (failed) return retval;
@@ -2039,7 +2039,7 @@
             }
 
             // AST REWRITE
-            // elements: END, query_key, normal_lhs_block, query_id, parameters
+            // elements: query_id, END, normal_lhs_block, parameters, query_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -2051,13 +2051,13 @@
             root_0 = (Object)adaptor.nil();
             // 543:3: -> ^( query_key query_id ( parameters )? normal_lhs_block END )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:543:6: ^( query_key query_id ( parameters )? normal_lhs_block END )
+                // src/main/resources/org/drools/lang/DRL.g:543:6: ^( query_key query_id ( parameters )? normal_lhs_block END )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_query_key.nextNode(), root_1);
 
                 adaptor.addChild(root_1, stream_query_id.next());
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:543:27: ( parameters )?
+                // src/main/resources/org/drools/lang/DRL.g:543:27: ( parameters )?
                 if ( stream_parameters.hasNext() ) {
                     adaptor.addChild(root_1, stream_parameters.next());
 
@@ -2101,7 +2101,7 @@
     };
 
     // $ANTLR start query_id
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:546:1: query_id : (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] );
+    // src/main/resources/org/drools/lang/DRL.g:546:1: query_id : (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] );
     public final query_id_return query_id() throws RecognitionException {
         query_id_return retval = new query_id_return();
         retval.start = input.LT(1);
@@ -2111,11 +2111,11 @@
         Token id=null;
 
         Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:547:2: (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:547:2: (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] )
             int alt14=2;
             int LA14_0 = input.LA(1);
 
@@ -2134,7 +2134,7 @@
             }
             switch (alt14) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:547:5: id= ID
+                    // src/main/resources/org/drools/lang/DRL.g:547:5: id= ID
                     {
                     id=(Token)input.LT(1);
                     match(input,ID,FOLLOW_ID_in_query_id983); if (failed) return retval;
@@ -2167,7 +2167,7 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:550:5: id= STRING
+                    // src/main/resources/org/drools/lang/DRL.g:550:5: id= STRING
                     {
                     id=(Token)input.LT(1);
                     match(input,STRING,FOLLOW_STRING_in_query_id999); if (failed) return retval;
@@ -2224,7 +2224,7 @@
     };
 
     // $ANTLR start parameters
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:555:1: parameters : LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN ) ;
+    // src/main/resources/org/drools/lang/DRL.g:555:1: parameters : LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN ) ;
     public final parameters_return parameters() throws RecognitionException {
         parameters_return retval = new parameters_return();
         retval.start = input.LT(1);
@@ -2242,13 +2242,13 @@
         Object LEFT_PAREN37_tree=null;
         Object COMMA39_tree=null;
         Object RIGHT_PAREN41_tree=null;
-        RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
+        RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
         RewriteRuleSubtreeStream stream_param_definition=new RewriteRuleSubtreeStream(adaptor,"rule param_definition");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:556:2: ( LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:556:4: LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN
+            // src/main/resources/org/drools/lang/DRL.g:556:2: ( LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN ) )
+            // src/main/resources/org/drools/lang/DRL.g:556:4: LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN
             {
             LEFT_PAREN37=(Token)input.LT(1);
             match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_parameters1018); if (failed) return retval;
@@ -2257,7 +2257,7 @@
             if ( backtracking==0 ) {
               	emit(LEFT_PAREN37, DroolsEditorType.SYMBOL);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:557:4: ( param_definition ( COMMA param_definition )* )?
+            // src/main/resources/org/drools/lang/DRL.g:557:4: ( param_definition ( COMMA param_definition )* )?
             int alt16=2;
             int LA16_0 = input.LA(1);
 
@@ -2266,14 +2266,14 @@
             }
             switch (alt16) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:557:6: param_definition ( COMMA param_definition )*
+                    // src/main/resources/org/drools/lang/DRL.g:557:6: param_definition ( COMMA param_definition )*
                     {
                     pushFollow(FOLLOW_param_definition_in_parameters1027);
                     param_definition38=param_definition();
                     _fsp--;
                     if (failed) return retval;
                     if ( backtracking==0 ) stream_param_definition.add(param_definition38.getTree());
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:557:23: ( COMMA param_definition )*
+                    // src/main/resources/org/drools/lang/DRL.g:557:23: ( COMMA param_definition )*
                     loop15:
                     do {
                         int alt15=2;
@@ -2286,7 +2286,7 @@
 
                         switch (alt15) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:557:24: COMMA param_definition
+                    	    // src/main/resources/org/drools/lang/DRL.g:557:24: COMMA param_definition
                     	    {
                     	    COMMA39=(Token)input.LT(1);
                     	    match(input,COMMA,FOLLOW_COMMA_in_parameters1030); if (failed) return retval;
@@ -2336,12 +2336,12 @@
             root_0 = (Object)adaptor.nil();
             // 559:3: -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:559:6: ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
+                // src/main/resources/org/drools/lang/DRL.g:559:6: ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_PARAM_LIST, "VT_PARAM_LIST"), root_1);
 
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:559:22: ( param_definition )*
+                // src/main/resources/org/drools/lang/DRL.g:559:22: ( param_definition )*
                 while ( stream_param_definition.hasNext() ) {
                     adaptor.addChild(root_1, stream_param_definition.next());
 
@@ -2381,7 +2381,7 @@
     };
 
     // $ANTLR start param_definition
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:562:1: param_definition : ( data_type )? argument ;
+    // src/main/resources/org/drools/lang/DRL.g:562:1: param_definition : ( data_type )? argument ;
     public final param_definition_return param_definition() throws RecognitionException {
         param_definition_return retval = new param_definition_return();
         retval.start = input.LT(1);
@@ -2395,17 +2395,17 @@
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:563:2: ( ( data_type )? argument )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:563:4: ( data_type )? argument
+            // src/main/resources/org/drools/lang/DRL.g:563:2: ( ( data_type )? argument )
+            // src/main/resources/org/drools/lang/DRL.g:563:4: ( data_type )? argument
             {
             root_0 = (Object)adaptor.nil();
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:563:4: ( data_type )?
+            // src/main/resources/org/drools/lang/DRL.g:563:4: ( data_type )?
             int alt17=2;
             alt17 = dfa17.predict(input);
             switch (alt17) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:563:4: data_type
+                    // src/main/resources/org/drools/lang/DRL.g:563:4: data_type
                     {
                     pushFollow(FOLLOW_data_type_in_param_definition1069);
                     data_type42=data_type();
@@ -2449,7 +2449,7 @@
     };
 
     // $ANTLR start argument
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:566:1: argument : ID ( dimension_definition )* ;
+    // src/main/resources/org/drools/lang/DRL.g:566:1: argument : ID ( dimension_definition )* ;
     public final argument_return argument() throws RecognitionException {
         argument_return retval = new argument_return();
         retval.start = input.LT(1);
@@ -2463,8 +2463,8 @@
         Object ID44_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:567:2: ( ID ( dimension_definition )* )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:567:4: ID ( dimension_definition )*
+            // src/main/resources/org/drools/lang/DRL.g:567:2: ( ID ( dimension_definition )* )
+            // src/main/resources/org/drools/lang/DRL.g:567:4: ID ( dimension_definition )*
             {
             root_0 = (Object)adaptor.nil();
 
@@ -2477,7 +2477,7 @@
             if ( backtracking==0 ) {
               	emit(ID44, DroolsEditorType.IDENTIFIER);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:568:3: ( dimension_definition )*
+            // src/main/resources/org/drools/lang/DRL.g:568:3: ( dimension_definition )*
             loop18:
             do {
                 int alt18=2;
@@ -2490,7 +2490,7 @@
 
                 switch (alt18) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:568:3: dimension_definition
+            	    // src/main/resources/org/drools/lang/DRL.g:568:3: dimension_definition
             	    {
             	    pushFollow(FOLLOW_dimension_definition_in_argument1089);
             	    dimension_definition45=dimension_definition();
@@ -2532,7 +2532,7 @@
     };
 
     // $ANTLR start type_declaration
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:571:1: type_declaration : declare_key type_declare_id ( decl_metadata )* ( decl_field )* END -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END ) ;
+    // src/main/resources/org/drools/lang/DRL.g:571:1: type_declaration : declare_key type_declare_id ( decl_metadata )* ( decl_field )* END -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END ) ;
     public final type_declaration_return type_declaration() throws RecognitionException {
         type_declaration_return retval = new type_declaration_return();
         retval.start = input.LT(1);
@@ -2552,13 +2552,13 @@
         Object END50_tree=null;
         RewriteRuleTokenStream stream_END=new RewriteRuleTokenStream(adaptor,"token END");
         RewriteRuleSubtreeStream stream_decl_field=new RewriteRuleSubtreeStream(adaptor,"rule decl_field");
+        RewriteRuleSubtreeStream stream_type_declare_id=new RewriteRuleSubtreeStream(adaptor,"rule type_declare_id");
+        RewriteRuleSubtreeStream stream_decl_metadata=new RewriteRuleSubtreeStream(adaptor,"rule decl_metadata");
         RewriteRuleSubtreeStream stream_declare_key=new RewriteRuleSubtreeStream(adaptor,"rule declare_key");
-        RewriteRuleSubtreeStream stream_decl_metadata=new RewriteRuleSubtreeStream(adaptor,"rule decl_metadata");
-        RewriteRuleSubtreeStream stream_type_declare_id=new RewriteRuleSubtreeStream(adaptor,"rule type_declare_id");
          pushParaphrases(DroolsParaphraseTypes.TYPE_DECLARE); 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:574:2: ( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:575:2: declare_key type_declare_id ( decl_metadata )* ( decl_field )* END
+            // src/main/resources/org/drools/lang/DRL.g:574:2: ( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END ) )
+            // src/main/resources/org/drools/lang/DRL.g:575:2: declare_key type_declare_id ( decl_metadata )* ( decl_field )* END
             {
             if ( backtracking==0 ) {
               	beginSentence(DroolsSentenceType.TYPE_DECLARATION);	
@@ -2573,7 +2573,7 @@
             _fsp--;
             if (failed) return retval;
             if ( backtracking==0 ) stream_type_declare_id.add(type_declare_id47.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:577:3: ( decl_metadata )*
+            // src/main/resources/org/drools/lang/DRL.g:577:3: ( decl_metadata )*
             loop19:
             do {
                 int alt19=2;
@@ -2586,7 +2586,7 @@
 
                 switch (alt19) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:577:3: decl_metadata
+            	    // src/main/resources/org/drools/lang/DRL.g:577:3: decl_metadata
             	    {
             	    pushFollow(FOLLOW_decl_metadata_in_type_declaration1124);
             	    decl_metadata48=decl_metadata();
@@ -2602,7 +2602,7 @@
                 }
             } while (true);
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:578:3: ( decl_field )*
+            // src/main/resources/org/drools/lang/DRL.g:578:3: ( decl_field )*
             loop20:
             do {
                 int alt20=2;
@@ -2615,7 +2615,7 @@
 
                 switch (alt20) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:578:3: decl_field
+            	    // src/main/resources/org/drools/lang/DRL.g:578:3: decl_field
             	    {
             	    pushFollow(FOLLOW_decl_field_in_type_declaration1129);
             	    decl_field49=decl_field();
@@ -2640,7 +2640,7 @@
             }
 
             // AST REWRITE
-            // elements: type_declare_id, declare_key, END, decl_field, decl_metadata
+            // elements: decl_metadata, type_declare_id, decl_field, END, declare_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -2652,19 +2652,19 @@
             root_0 = (Object)adaptor.nil();
             // 581:3: -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:581:6: ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END )
+                // src/main/resources/org/drools/lang/DRL.g:581:6: ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_declare_key.nextNode(), root_1);
 
                 adaptor.addChild(root_1, stream_type_declare_id.next());
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:581:36: ( decl_metadata )*
+                // src/main/resources/org/drools/lang/DRL.g:581:36: ( decl_metadata )*
                 while ( stream_decl_metadata.hasNext() ) {
                     adaptor.addChild(root_1, stream_decl_metadata.next());
 
                 }
                 stream_decl_metadata.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:581:51: ( decl_field )*
+                // src/main/resources/org/drools/lang/DRL.g:581:51: ( decl_field )*
                 while ( stream_decl_field.hasNext() ) {
                     adaptor.addChild(root_1, stream_decl_field.next());
 
@@ -2707,7 +2707,7 @@
     };
 
     // $ANTLR start type_declare_id
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:584:1: type_declare_id : id= ID -> VT_TYPE_DECLARE_ID[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:584:1: type_declare_id : id= ID -> VT_TYPE_DECLARE_ID[$id] ;
     public final type_declare_id_return type_declare_id() throws RecognitionException {
         type_declare_id_return retval = new type_declare_id_return();
         retval.start = input.LT(1);
@@ -2720,8 +2720,8 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:585:2: (id= ID -> VT_TYPE_DECLARE_ID[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:585:5: id= ID
+            // src/main/resources/org/drools/lang/DRL.g:585:2: (id= ID -> VT_TYPE_DECLARE_ID[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:585:5: id= ID
             {
             id=(Token)input.LT(1);
             match(input,ID,FOLLOW_ID_in_type_declare_id1169); if (failed) return retval;
@@ -2776,7 +2776,7 @@
     };
 
     // $ANTLR start decl_metadata
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:590:1: decl_metadata : AT ID paren_chunk -> ^( AT ID paren_chunk ) ;
+    // src/main/resources/org/drools/lang/DRL.g:590:1: decl_metadata : AT ID paren_chunk -> ^( AT ID paren_chunk ) ;
     public final decl_metadata_return decl_metadata() throws RecognitionException {
         decl_metadata_return retval = new decl_metadata_return();
         retval.start = input.LT(1);
@@ -2794,8 +2794,8 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:591:2: ( AT ID paren_chunk -> ^( AT ID paren_chunk ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:591:4: AT ID paren_chunk
+            // src/main/resources/org/drools/lang/DRL.g:591:2: ( AT ID paren_chunk -> ^( AT ID paren_chunk ) )
+            // src/main/resources/org/drools/lang/DRL.g:591:4: AT ID paren_chunk
             {
             AT51=(Token)input.LT(1);
             match(input,AT,FOLLOW_AT_in_decl_metadata1188); if (failed) return retval;
@@ -2818,7 +2818,7 @@
             if ( backtracking==0 ) stream_paren_chunk.add(paren_chunk53.getTree());
 
             // AST REWRITE
-            // elements: AT, paren_chunk, ID
+            // elements: AT, ID, paren_chunk
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -2830,7 +2830,7 @@
             root_0 = (Object)adaptor.nil();
             // 596:3: -> ^( AT ID paren_chunk )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:596:6: ^( AT ID paren_chunk )
+                // src/main/resources/org/drools/lang/DRL.g:596:6: ^( AT ID paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_AT.next(), root_1);
@@ -2870,7 +2870,7 @@
     };
 
     // $ANTLR start decl_field
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:599:1: decl_field : ID ( decl_field_initialization )? COLON data_type ( decl_metadata )* -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) ;
+    // src/main/resources/org/drools/lang/DRL.g:599:1: decl_field : ID ( decl_field_initialization )? COLON data_type ( decl_metadata )* -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) ;
     public final decl_field_return decl_field() throws RecognitionException {
         decl_field_return retval = new decl_field_return();
         retval.start = input.LT(1);
@@ -2890,12 +2890,12 @@
         Object COLON56_tree=null;
         RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
-        RewriteRuleSubtreeStream stream_decl_metadata=new RewriteRuleSubtreeStream(adaptor,"rule decl_metadata");
         RewriteRuleSubtreeStream stream_decl_field_initialization=new RewriteRuleSubtreeStream(adaptor,"rule decl_field_initialization");
         RewriteRuleSubtreeStream stream_data_type=new RewriteRuleSubtreeStream(adaptor,"rule data_type");
+        RewriteRuleSubtreeStream stream_decl_metadata=new RewriteRuleSubtreeStream(adaptor,"rule decl_metadata");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:600:2: ( ID ( decl_field_initialization )? COLON data_type ( decl_metadata )* -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:600:4: ID ( decl_field_initialization )? COLON data_type ( decl_metadata )*
+            // src/main/resources/org/drools/lang/DRL.g:600:2: ( ID ( decl_field_initialization )? COLON data_type ( decl_metadata )* -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) )
+            // src/main/resources/org/drools/lang/DRL.g:600:4: ID ( decl_field_initialization )? COLON data_type ( decl_metadata )*
             {
             ID54=(Token)input.LT(1);
             match(input,ID,FOLLOW_ID_in_decl_field1226); if (failed) return retval;
@@ -2904,7 +2904,7 @@
             if ( backtracking==0 ) {
               	emit(ID54, DroolsEditorType.IDENTIFIER);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:601:3: ( decl_field_initialization )?
+            // src/main/resources/org/drools/lang/DRL.g:601:3: ( decl_field_initialization )?
             int alt21=2;
             int LA21_0 = input.LA(1);
 
@@ -2913,7 +2913,7 @@
             }
             switch (alt21) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:601:3: decl_field_initialization
+                    // src/main/resources/org/drools/lang/DRL.g:601:3: decl_field_initialization
                     {
                     pushFollow(FOLLOW_decl_field_initialization_in_decl_field1232);
                     decl_field_initialization55=decl_field_initialization();
@@ -2938,7 +2938,7 @@
             _fsp--;
             if (failed) return retval;
             if ( backtracking==0 ) stream_data_type.add(data_type57.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:604:3: ( decl_metadata )*
+            // src/main/resources/org/drools/lang/DRL.g:604:3: ( decl_metadata )*
             loop22:
             do {
                 int alt22=2;
@@ -2951,7 +2951,7 @@
 
                 switch (alt22) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:604:3: decl_metadata
+            	    // src/main/resources/org/drools/lang/DRL.g:604:3: decl_metadata
             	    {
             	    pushFollow(FOLLOW_decl_metadata_in_decl_field1248);
             	    decl_metadata58=decl_metadata();
@@ -2969,7 +2969,7 @@
 
 
             // AST REWRITE
-            // elements: decl_field_initialization, decl_metadata, data_type, ID
+            // elements: decl_metadata, data_type, decl_field_initialization, ID
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -2981,19 +2981,19 @@
             root_0 = (Object)adaptor.nil();
             // 605:3: -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:605:6: ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
+                // src/main/resources/org/drools/lang/DRL.g:605:6: ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_ID.next(), root_1);
 
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:605:11: ( decl_field_initialization )?
+                // src/main/resources/org/drools/lang/DRL.g:605:11: ( decl_field_initialization )?
                 if ( stream_decl_field_initialization.hasNext() ) {
                     adaptor.addChild(root_1, stream_decl_field_initialization.next());
 
                 }
                 stream_decl_field_initialization.reset();
                 adaptor.addChild(root_1, stream_data_type.next());
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:605:48: ( decl_metadata )*
+                // src/main/resources/org/drools/lang/DRL.g:605:48: ( decl_metadata )*
                 while ( stream_decl_metadata.hasNext() ) {
                     adaptor.addChild(root_1, stream_decl_metadata.next());
 
@@ -3032,7 +3032,7 @@
     };
 
     // $ANTLR start decl_field_initialization
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:608:1: decl_field_initialization : EQUALS paren_chunk -> ^( EQUALS paren_chunk ) ;
+    // src/main/resources/org/drools/lang/DRL.g:608:1: decl_field_initialization : EQUALS paren_chunk -> ^( EQUALS paren_chunk ) ;
     public final decl_field_initialization_return decl_field_initialization() throws RecognitionException {
         decl_field_initialization_return retval = new decl_field_initialization_return();
         retval.start = input.LT(1);
@@ -3047,8 +3047,8 @@
         RewriteRuleTokenStream stream_EQUALS=new RewriteRuleTokenStream(adaptor,"token EQUALS");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:609:2: ( EQUALS paren_chunk -> ^( EQUALS paren_chunk ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:609:4: EQUALS paren_chunk
+            // src/main/resources/org/drools/lang/DRL.g:609:2: ( EQUALS paren_chunk -> ^( EQUALS paren_chunk ) )
+            // src/main/resources/org/drools/lang/DRL.g:609:4: EQUALS paren_chunk
             {
             EQUALS59=(Token)input.LT(1);
             match(input,EQUALS,FOLLOW_EQUALS_in_decl_field_initialization1276); if (failed) return retval;
@@ -3076,7 +3076,7 @@
             root_0 = (Object)adaptor.nil();
             // 611:2: -> ^( EQUALS paren_chunk )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:611:5: ^( EQUALS paren_chunk )
+                // src/main/resources/org/drools/lang/DRL.g:611:5: ^( EQUALS paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_EQUALS.next(), root_1);
@@ -3115,7 +3115,7 @@
     };
 
     // $ANTLR start template
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:614:1: template : template_key template_id (semi1= SEMICOLON )? ( template_slot )+ END (semi2= SEMICOLON )? -> ^( template_key template_id ( template_slot )+ END ) ;
+    // src/main/resources/org/drools/lang/DRL.g:614:1: template : template_key template_id (semi1= SEMICOLON )? ( template_slot )+ END (semi2= SEMICOLON )? -> ^( template_key template_id ( template_slot )+ END ) ;
     public final template_return template() throws RecognitionException {
         template_return retval = new template_return();
         retval.start = input.LT(1);
@@ -3135,15 +3135,15 @@
         Object semi1_tree=null;
         Object semi2_tree=null;
         Object END64_tree=null;
+        RewriteRuleTokenStream stream_SEMICOLON=new RewriteRuleTokenStream(adaptor,"token SEMICOLON");
         RewriteRuleTokenStream stream_END=new RewriteRuleTokenStream(adaptor,"token END");
-        RewriteRuleTokenStream stream_SEMICOLON=new RewriteRuleTokenStream(adaptor,"token SEMICOLON");
+        RewriteRuleSubtreeStream stream_template_slot=new RewriteRuleSubtreeStream(adaptor,"rule template_slot");
         RewriteRuleSubtreeStream stream_template_id=new RewriteRuleSubtreeStream(adaptor,"rule template_id");
-        RewriteRuleSubtreeStream stream_template_slot=new RewriteRuleSubtreeStream(adaptor,"rule template_slot");
         RewriteRuleSubtreeStream stream_template_key=new RewriteRuleSubtreeStream(adaptor,"rule template_key");
          pushParaphrases(DroolsParaphraseTypes.TEMPLATE); 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:617:2: ( template_key template_id (semi1= SEMICOLON )? ( template_slot )+ END (semi2= SEMICOLON )? -> ^( template_key template_id ( template_slot )+ END ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:618:2: template_key template_id (semi1= SEMICOLON )? ( template_slot )+ END (semi2= SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:617:2: ( template_key template_id (semi1= SEMICOLON )? ( template_slot )+ END (semi2= SEMICOLON )? -> ^( template_key template_id ( template_slot )+ END ) )
+            // src/main/resources/org/drools/lang/DRL.g:618:2: template_key template_id (semi1= SEMICOLON )? ( template_slot )+ END (semi2= SEMICOLON )?
             {
             if ( backtracking==0 ) {
               	beginSentence(DroolsSentenceType.TEMPLATE);	
@@ -3158,7 +3158,7 @@
             _fsp--;
             if (failed) return retval;
             if ( backtracking==0 ) stream_template_id.add(template_id62.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:620:8: (semi1= SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:620:8: (semi1= SEMICOLON )?
             int alt23=2;
             int LA23_0 = input.LA(1);
 
@@ -3167,7 +3167,7 @@
             }
             switch (alt23) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:620:8: semi1= SEMICOLON
+                    // src/main/resources/org/drools/lang/DRL.g:620:8: semi1= SEMICOLON
                     {
                     semi1=(Token)input.LT(1);
                     match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1328); if (failed) return retval;
@@ -3182,7 +3182,7 @@
             if ( backtracking==0 ) {
               	emit(semi1, DroolsEditorType.SYMBOL);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:622:3: ( template_slot )+
+            // src/main/resources/org/drools/lang/DRL.g:622:3: ( template_slot )+
             int cnt24=0;
             loop24:
             do {
@@ -3196,7 +3196,7 @@
 
                 switch (alt24) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:622:3: template_slot
+            	    // src/main/resources/org/drools/lang/DRL.g:622:3: template_slot
             	    {
             	    pushFollow(FOLLOW_template_slot_in_template1336);
             	    template_slot63=template_slot();
@@ -3221,7 +3221,7 @@
             match(input,END,FOLLOW_END_in_template1341); if (failed) return retval;
             if ( backtracking==0 ) stream_END.add(END64);
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:623:12: (semi2= SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:623:12: (semi2= SEMICOLON )?
             int alt25=2;
             int LA25_0 = input.LA(1);
 
@@ -3230,7 +3230,7 @@
             }
             switch (alt25) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:623:12: semi2= SEMICOLON
+                    // src/main/resources/org/drools/lang/DRL.g:623:12: semi2= SEMICOLON
                     {
                     semi2=(Token)input.LT(1);
                     match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1345); if (failed) return retval;
@@ -3260,7 +3260,7 @@
             root_0 = (Object)adaptor.nil();
             // 626:3: -> ^( template_key template_id ( template_slot )+ END )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:626:6: ^( template_key template_id ( template_slot )+ END )
+                // src/main/resources/org/drools/lang/DRL.g:626:6: ^( template_key template_id ( template_slot )+ END )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_template_key.nextNode(), root_1);
@@ -3311,7 +3311,7 @@
     };
 
     // $ANTLR start template_id
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:629:1: template_id : (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] );
+    // src/main/resources/org/drools/lang/DRL.g:629:1: template_id : (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] );
     public final template_id_return template_id() throws RecognitionException {
         template_id_return retval = new template_id_return();
         retval.start = input.LT(1);
@@ -3321,11 +3321,11 @@
         Token id=null;
 
         Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:630:2: (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:630:2: (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] )
             int alt26=2;
             int LA26_0 = input.LA(1);
 
@@ -3344,7 +3344,7 @@
             }
             switch (alt26) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:630:5: id= ID
+                    // src/main/resources/org/drools/lang/DRL.g:630:5: id= ID
                     {
                     id=(Token)input.LT(1);
                     match(input,ID,FOLLOW_ID_in_template_id1378); if (failed) return retval;
@@ -3377,7 +3377,7 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:633:5: id= STRING
+                    // src/main/resources/org/drools/lang/DRL.g:633:5: id= STRING
                     {
                     id=(Token)input.LT(1);
                     match(input,STRING,FOLLOW_STRING_in_template_id1394); if (failed) return retval;
@@ -3434,7 +3434,7 @@
     };
 
     // $ANTLR start template_slot
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:638:1: template_slot : data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) ;
+    // src/main/resources/org/drools/lang/DRL.g:638:1: template_slot : data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) ;
     public final template_slot_return template_slot() throws RecognitionException {
         template_slot_return retval = new template_slot_return();
         retval.start = input.LT(1);
@@ -3452,8 +3452,8 @@
         RewriteRuleSubtreeStream stream_slot_id=new RewriteRuleSubtreeStream(adaptor,"rule slot_id");
         RewriteRuleSubtreeStream stream_data_type=new RewriteRuleSubtreeStream(adaptor,"rule data_type");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:639:2: ( data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:639:5: data_type slot_id ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:639:2: ( data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) )
+            // src/main/resources/org/drools/lang/DRL.g:639:5: data_type slot_id ( SEMICOLON )?
             {
             pushFollow(FOLLOW_data_type_in_template_slot1414);
             data_type65=data_type();
@@ -3465,7 +3465,7 @@
             _fsp--;
             if (failed) return retval;
             if ( backtracking==0 ) stream_slot_id.add(slot_id66.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:639:23: ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:639:23: ( SEMICOLON )?
             int alt27=2;
             int LA27_0 = input.LA(1);
 
@@ -3474,7 +3474,7 @@
             }
             switch (alt27) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:639:23: SEMICOLON
+                    // src/main/resources/org/drools/lang/DRL.g:639:23: SEMICOLON
                     {
                     SEMICOLON67=(Token)input.LT(1);
                     match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template_slot1418); if (failed) return retval;
@@ -3503,7 +3503,7 @@
             root_0 = (Object)adaptor.nil();
             // 641:3: -> ^( VT_SLOT data_type slot_id )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:641:6: ^( VT_SLOT data_type slot_id )
+                // src/main/resources/org/drools/lang/DRL.g:641:6: ^( VT_SLOT data_type slot_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_SLOT, "VT_SLOT"), root_1);
@@ -3543,7 +3543,7 @@
     };
 
     // $ANTLR start slot_id
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:644:1: slot_id : id= ID -> VT_SLOT_ID[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:644:1: slot_id : id= ID -> VT_SLOT_ID[$id] ;
     public final slot_id_return slot_id() throws RecognitionException {
         slot_id_return retval = new slot_id_return();
         retval.start = input.LT(1);
@@ -3556,8 +3556,8 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:645:2: (id= ID -> VT_SLOT_ID[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:645:4: id= ID
+            // src/main/resources/org/drools/lang/DRL.g:645:2: (id= ID -> VT_SLOT_ID[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:645:4: id= ID
             {
             id=(Token)input.LT(1);
             match(input,ID,FOLLOW_ID_in_slot_id1447); if (failed) return retval;
@@ -3611,7 +3611,7 @@
     };
 
     // $ANTLR start rule
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:650:1: rule : rule_key rule_id ( rule_attributes )? ( when_part )? rhs_chunk -> ^( rule_key rule_id ( rule_attributes )? ( when_part )? rhs_chunk ) ;
+    // src/main/resources/org/drools/lang/DRL.g:650:1: rule : rule_key rule_id ( rule_attributes )? ( decl_metadata )* ( when_part )? rhs_chunk -> ^( rule_key rule_id ( rule_attributes )? ( decl_metadata )* ( when_part )? rhs_chunk ) ;
     public final rule_return rule() throws RecognitionException {
         rule_return retval = new rule_return();
         retval.start = input.LT(1);
@@ -3624,20 +3624,23 @@
 
         rule_attributes_return rule_attributes70 = null;
 
-        when_part_return when_part71 = null;
+        decl_metadata_return decl_metadata71 = null;
 
-        rhs_chunk_return rhs_chunk72 = null;
+        when_part_return when_part72 = null;
 
+        rhs_chunk_return rhs_chunk73 = null;
 
+
+        RewriteRuleSubtreeStream stream_rule_id=new RewriteRuleSubtreeStream(adaptor,"rule rule_id");
+        RewriteRuleSubtreeStream stream_rhs_chunk=new RewriteRuleSubtreeStream(adaptor,"rule rhs_chunk");
+        RewriteRuleSubtreeStream stream_rule_attributes=new RewriteRuleSubtreeStream(adaptor,"rule rule_attributes");
         RewriteRuleSubtreeStream stream_rule_key=new RewriteRuleSubtreeStream(adaptor,"rule rule_key");
-        RewriteRuleSubtreeStream stream_rule_id=new RewriteRuleSubtreeStream(adaptor,"rule rule_id");
+        RewriteRuleSubtreeStream stream_decl_metadata=new RewriteRuleSubtreeStream(adaptor,"rule decl_metadata");
         RewriteRuleSubtreeStream stream_when_part=new RewriteRuleSubtreeStream(adaptor,"rule when_part");
-        RewriteRuleSubtreeStream stream_rule_attributes=new RewriteRuleSubtreeStream(adaptor,"rule rule_attributes");
-        RewriteRuleSubtreeStream stream_rhs_chunk=new RewriteRuleSubtreeStream(adaptor,"rule rhs_chunk");
          pushParaphrases(DroolsParaphraseTypes.RULE); 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:653:2: ( rule_key rule_id ( rule_attributes )? ( when_part )? rhs_chunk -> ^( rule_key rule_id ( rule_attributes )? ( when_part )? rhs_chunk ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:654:2: rule_key rule_id ( rule_attributes )? ( when_part )? rhs_chunk
+            // src/main/resources/org/drools/lang/DRL.g:653:2: ( rule_key rule_id ( rule_attributes )? ( decl_metadata )* ( when_part )? rhs_chunk -> ^( rule_key rule_id ( rule_attributes )? ( decl_metadata )* ( when_part )? rhs_chunk ) )
+            // src/main/resources/org/drools/lang/DRL.g:654:2: rule_key rule_id ( rule_attributes )? ( decl_metadata )* ( when_part )? rhs_chunk
             {
             if ( backtracking==0 ) {
               	beginSentence(DroolsSentenceType.RULE);	
@@ -3655,16 +3658,16 @@
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:657:3: ( rule_attributes )?
+            // src/main/resources/org/drools/lang/DRL.g:657:3: ( rule_attributes )?
             int alt28=2;
             int LA28_0 = input.LA(1);
 
-            if ( (LA28_0==ID) && (((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))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(Drool!
 sSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))))) {
+            if ( (LA28_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))||(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(Drool!
 sSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))))) {
                 alt28=1;
             }
             switch (alt28) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:657:3: rule_attributes
+                    // src/main/resources/org/drools/lang/DRL.g:657:3: rule_attributes
                     {
                     pushFollow(FOLLOW_rule_attributes_in_rule1494);
                     rule_attributes70=rule_attributes();
@@ -3677,36 +3680,65 @@
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:657:20: ( when_part )?
-            int alt29=2;
-            int LA29_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:657:20: ( decl_metadata )*
+            loop29:
+            do {
+                int alt29=2;
+                int LA29_0 = input.LA(1);
 
-            if ( (LA29_0==WHEN) ) {
-                alt29=1;
+                if ( (LA29_0==AT) ) {
+                    alt29=1;
+                }
+
+
+                switch (alt29) {
+            	case 1 :
+            	    // src/main/resources/org/drools/lang/DRL.g:657:20: decl_metadata
+            	    {
+            	    pushFollow(FOLLOW_decl_metadata_in_rule1497);
+            	    decl_metadata71=decl_metadata();
+            	    _fsp--;
+            	    if (failed) return retval;
+            	    if ( backtracking==0 ) stream_decl_metadata.add(decl_metadata71.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop29;
+                }
+            } while (true);
+
+            // src/main/resources/org/drools/lang/DRL.g:657:35: ( when_part )?
+            int alt30=2;
+            int LA30_0 = input.LA(1);
+
+            if ( (LA30_0==WHEN) ) {
+                alt30=1;
             }
-            switch (alt29) {
+            switch (alt30) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:657:20: when_part
+                    // src/main/resources/org/drools/lang/DRL.g:657:35: when_part
                     {
-                    pushFollow(FOLLOW_when_part_in_rule1497);
-                    when_part71=when_part();
+                    pushFollow(FOLLOW_when_part_in_rule1500);
+                    when_part72=when_part();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_when_part.add(when_part71.getTree());
+                    if ( backtracking==0 ) stream_when_part.add(when_part72.getTree());
 
                     }
                     break;
 
             }
 
-            pushFollow(FOLLOW_rhs_chunk_in_rule1500);
-            rhs_chunk72=rhs_chunk();
+            pushFollow(FOLLOW_rhs_chunk_in_rule1503);
+            rhs_chunk73=rhs_chunk();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) stream_rhs_chunk.add(rhs_chunk72.getTree());
+            if ( backtracking==0 ) stream_rhs_chunk.add(rhs_chunk73.getTree());
 
             // AST REWRITE
-            // elements: when_part, rule_key, rule_attributes, rhs_chunk, rule_id
+            // elements: rule_id, rule_key, when_part, rhs_chunk, decl_metadata, rule_attributes
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -3716,21 +3748,27 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 658:3: -> ^( rule_key rule_id ( rule_attributes )? ( when_part )? rhs_chunk )
+            // 658:3: -> ^( rule_key rule_id ( rule_attributes )? ( decl_metadata )* ( when_part )? rhs_chunk )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:658:6: ^( rule_key rule_id ( rule_attributes )? ( when_part )? rhs_chunk )
+                // src/main/resources/org/drools/lang/DRL.g:658:6: ^( rule_key rule_id ( rule_attributes )? ( decl_metadata )* ( when_part )? rhs_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_rule_key.nextNode(), root_1);
 
                 adaptor.addChild(root_1, stream_rule_id.next());
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:658:25: ( rule_attributes )?
+                // src/main/resources/org/drools/lang/DRL.g:658:25: ( rule_attributes )?
                 if ( stream_rule_attributes.hasNext() ) {
                     adaptor.addChild(root_1, stream_rule_attributes.next());
 
                 }
                 stream_rule_attributes.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:658:42: ( when_part )?
+                // src/main/resources/org/drools/lang/DRL.g:658:42: ( decl_metadata )*
+                while ( stream_decl_metadata.hasNext() ) {
+                    adaptor.addChild(root_1, stream_decl_metadata.next());
+
+                }
+                stream_decl_metadata.reset();
+                // src/main/resources/org/drools/lang/DRL.g:658:57: ( when_part )?
                 if ( stream_when_part.hasNext() ) {
                     adaptor.addChild(root_1, stream_when_part.next());
 
@@ -3773,48 +3811,48 @@
     };
 
     // $ANTLR start when_part
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:661:1: when_part : WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block ;
+    // src/main/resources/org/drools/lang/DRL.g:661:1: when_part : WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block ;
     public final when_part_return when_part() throws RecognitionException {
         when_part_return retval = new when_part_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token WHEN73=null;
-        Token COLON74=null;
-        normal_lhs_block_return normal_lhs_block75 = null;
+        Token WHEN74=null;
+        Token COLON75=null;
+        normal_lhs_block_return normal_lhs_block76 = null;
 
 
-        Object WHEN73_tree=null;
-        Object COLON74_tree=null;
+        Object WHEN74_tree=null;
+        Object COLON75_tree=null;
         RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
         RewriteRuleTokenStream stream_WHEN=new RewriteRuleTokenStream(adaptor,"token WHEN");
         RewriteRuleSubtreeStream stream_normal_lhs_block=new RewriteRuleSubtreeStream(adaptor,"rule normal_lhs_block");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:662:2: ( WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:662:5: WHEN ( COLON )? normal_lhs_block
+            // src/main/resources/org/drools/lang/DRL.g:662:2: ( WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block )
+            // src/main/resources/org/drools/lang/DRL.g:662:5: WHEN ( COLON )? normal_lhs_block
             {
-            WHEN73=(Token)input.LT(1);
-            match(input,WHEN,FOLLOW_WHEN_in_when_part1530); if (failed) return retval;
-            if ( backtracking==0 ) stream_WHEN.add(WHEN73);
+            WHEN74=(Token)input.LT(1);
+            match(input,WHEN,FOLLOW_WHEN_in_when_part1536); if (failed) return retval;
+            if ( backtracking==0 ) stream_WHEN.add(WHEN74);
 
             if ( backtracking==0 ) {
-              	emit(WHEN73, DroolsEditorType.KEYWORD);	
+              	emit(WHEN74, DroolsEditorType.KEYWORD);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:663:3: ( COLON )?
-            int alt30=2;
-            int LA30_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:663:3: ( COLON )?
+            int alt31=2;
+            int LA31_0 = input.LA(1);
 
-            if ( (LA30_0==COLON) ) {
-                alt30=1;
+            if ( (LA31_0==COLON) ) {
+                alt31=1;
             }
-            switch (alt30) {
+            switch (alt31) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:663:3: COLON
+                    // src/main/resources/org/drools/lang/DRL.g:663:3: COLON
                     {
-                    COLON74=(Token)input.LT(1);
-                    match(input,COLON,FOLLOW_COLON_in_when_part1536); if (failed) return retval;
-                    if ( backtracking==0 ) stream_COLON.add(COLON74);
+                    COLON75=(Token)input.LT(1);
+                    match(input,COLON,FOLLOW_COLON_in_when_part1542); if (failed) return retval;
+                    if ( backtracking==0 ) stream_COLON.add(COLON75);
 
 
                     }
@@ -3823,19 +3861,19 @@
             }
 
             if ( backtracking==0 ) {
-              	emit(COLON74, DroolsEditorType.SYMBOL);	
+              	emit(COLON75, DroolsEditorType.SYMBOL);	
             }
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
             }
-            pushFollow(FOLLOW_normal_lhs_block_in_when_part1546);
-            normal_lhs_block75=normal_lhs_block();
+            pushFollow(FOLLOW_normal_lhs_block_in_when_part1552);
+            normal_lhs_block76=normal_lhs_block();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) stream_normal_lhs_block.add(normal_lhs_block75.getTree());
+            if ( backtracking==0 ) stream_normal_lhs_block.add(normal_lhs_block76.getTree());
 
             // AST REWRITE
-            // elements: WHEN, normal_lhs_block
+            // elements: normal_lhs_block, WHEN
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -3879,7 +3917,7 @@
     };
 
     // $ANTLR start rule_id
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:669:1: rule_id : (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] );
+    // src/main/resources/org/drools/lang/DRL.g:669:1: rule_id : (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] );
     public final rule_id_return rule_id() throws RecognitionException {
         rule_id_return retval = new rule_id_return();
         retval.start = input.LT(1);
@@ -3889,33 +3927,33 @@
         Token id=null;
 
         Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:670:2: (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] )
-            int alt31=2;
-            int LA31_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:670:2: (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] )
+            int alt32=2;
+            int LA32_0 = input.LA(1);
 
-            if ( (LA31_0==ID) ) {
-                alt31=1;
+            if ( (LA32_0==ID) ) {
+                alt32=1;
             }
-            else if ( (LA31_0==STRING) ) {
-                alt31=2;
+            else if ( (LA32_0==STRING) ) {
+                alt32=2;
             }
             else {
                 if (backtracking>0) {failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("669:1: rule_id : (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] );", 31, 0, input);
+                    new NoViableAltException("669:1: rule_id : (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] );", 32, 0, input);
 
                 throw nvae;
             }
-            switch (alt31) {
+            switch (alt32) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:670:5: id= ID
+                    // src/main/resources/org/drools/lang/DRL.g:670:5: id= ID
                     {
                     id=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_rule_id1567); if (failed) return retval;
+                    match(input,ID,FOLLOW_ID_in_rule_id1573); if (failed) return retval;
                     if ( backtracking==0 ) stream_ID.add(id);
 
                     if ( backtracking==0 ) {
@@ -3945,10 +3983,10 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:673:5: id= STRING
+                    // src/main/resources/org/drools/lang/DRL.g:673:5: id= STRING
                     {
                     id=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_rule_id1583); if (failed) return retval;
+                    match(input,STRING,FOLLOW_STRING_in_rule_id1589); if (failed) return retval;
                     if ( backtracking==0 ) stream_STRING.add(id);
 
                     if ( backtracking==0 ) {
@@ -4002,58 +4040,58 @@
     };
 
     // $ANTLR start rule_attributes
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:678:1: rule_attributes : ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )* -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ ) ;
+    // src/main/resources/org/drools/lang/DRL.g:678:1: rule_attributes : ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )* -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ ) ;
     public final rule_attributes_return rule_attributes() throws RecognitionException {
         rule_attributes_return retval = new rule_attributes_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token COLON77=null;
-        Token COMMA79=null;
+        Token COLON78=null;
+        Token COMMA80=null;
         rule_attribute_return attr = null;
 
-        attributes_key_return attributes_key76 = null;
+        attributes_key_return attributes_key77 = null;
 
-        rule_attribute_return rule_attribute78 = null;
+        rule_attribute_return rule_attribute79 = null;
 
 
-        Object COLON77_tree=null;
-        Object COMMA79_tree=null;
+        Object COLON78_tree=null;
+        Object COMMA80_tree=null;
+        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
-        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
+        RewriteRuleSubtreeStream stream_rule_attribute=new RewriteRuleSubtreeStream(adaptor,"rule rule_attribute");
         RewriteRuleSubtreeStream stream_attributes_key=new RewriteRuleSubtreeStream(adaptor,"rule attributes_key");
-        RewriteRuleSubtreeStream stream_rule_attribute=new RewriteRuleSubtreeStream(adaptor,"rule rule_attribute");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:679:2: ( ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )* -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:679:4: ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )*
+            // src/main/resources/org/drools/lang/DRL.g:679:2: ( ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )* -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ ) )
+            // src/main/resources/org/drools/lang/DRL.g:679:4: ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )*
             {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:679:4: ( attributes_key COLON )?
-            int alt32=2;
-            int LA32_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:679:4: ( attributes_key COLON )?
+            int alt33=2;
+            int LA33_0 = input.LA(1);
 
-            if ( (LA32_0==ID) && (((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))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(Drool!
 sSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))))) {
-                int LA32_1 = input.LA(2);
+            if ( (LA33_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))||(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(Drool!
 sSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))))) {
+                int LA33_1 = input.LA(2);
 
-                if ( (LA32_1==COLON) && ((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES)))) {
-                    alt32=1;
+                if ( (LA33_1==COLON) && ((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES)))) {
+                    alt33=1;
                 }
             }
-            switch (alt32) {
+            switch (alt33) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:679:6: attributes_key COLON
+                    // src/main/resources/org/drools/lang/DRL.g:679:6: attributes_key COLON
                     {
-                    pushFollow(FOLLOW_attributes_key_in_rule_attributes1604);
-                    attributes_key76=attributes_key();
+                    pushFollow(FOLLOW_attributes_key_in_rule_attributes1610);
+                    attributes_key77=attributes_key();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_attributes_key.add(attributes_key76.getTree());
-                    COLON77=(Token)input.LT(1);
-                    match(input,COLON,FOLLOW_COLON_in_rule_attributes1606); if (failed) return retval;
-                    if ( backtracking==0 ) stream_COLON.add(COLON77);
+                    if ( backtracking==0 ) stream_attributes_key.add(attributes_key77.getTree());
+                    COLON78=(Token)input.LT(1);
+                    match(input,COLON,FOLLOW_COLON_in_rule_attributes1612); if (failed) return retval;
+                    if ( backtracking==0 ) stream_COLON.add(COLON78);
 
                     if ( backtracking==0 ) {
-                      	emit(COLON77, DroolsEditorType.SYMBOL);	
+                      	emit(COLON78, DroolsEditorType.SYMBOL);	
                     }
 
                     }
@@ -4061,43 +4099,43 @@
 
             }
 
-            pushFollow(FOLLOW_rule_attribute_in_rule_attributes1616);
-            rule_attribute78=rule_attribute();
+            pushFollow(FOLLOW_rule_attribute_in_rule_attributes1622);
+            rule_attribute79=rule_attribute();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) stream_rule_attribute.add(rule_attribute78.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:680:18: ( ( COMMA )? attr= rule_attribute )*
-            loop34:
+            if ( backtracking==0 ) stream_rule_attribute.add(rule_attribute79.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:680:18: ( ( COMMA )? attr= rule_attribute )*
+            loop35:
             do {
-                int alt34=2;
-                int LA34_0 = input.LA(1);
+                int alt35=2;
+                int LA35_0 = input.LA(1);
 
-                if ( (LA34_0==COMMA) ) {
-                    alt34=1;
+                if ( (LA35_0==COMMA) ) {
+                    alt35=1;
                 }
-                else if ( (LA34_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))||(validateIdentifierK!
 ey(DroolsSoftKeywords.DURATION))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))))) {
-                    alt34=1;
+                else if ( (LA35_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))||(validateIdentifierKey(Drools!
 SoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))))) {
+                    alt35=1;
                 }
 
 
-                switch (alt34) {
+                switch (alt35) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:680:20: ( COMMA )? attr= rule_attribute
+            	    // src/main/resources/org/drools/lang/DRL.g:680:20: ( COMMA )? attr= rule_attribute
             	    {
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:680:20: ( COMMA )?
-            	    int alt33=2;
-            	    int LA33_0 = input.LA(1);
+            	    // src/main/resources/org/drools/lang/DRL.g:680:20: ( COMMA )?
+            	    int alt34=2;
+            	    int LA34_0 = input.LA(1);
 
-            	    if ( (LA33_0==COMMA) ) {
-            	        alt33=1;
+            	    if ( (LA34_0==COMMA) ) {
+            	        alt34=1;
             	    }
-            	    switch (alt33) {
+            	    switch (alt34) {
             	        case 1 :
-            	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:680:20: COMMA
+            	            // src/main/resources/org/drools/lang/DRL.g:680:20: COMMA
             	            {
-            	            COMMA79=(Token)input.LT(1);
-            	            match(input,COMMA,FOLLOW_COMMA_in_rule_attributes1620); if (failed) return retval;
-            	            if ( backtracking==0 ) stream_COMMA.add(COMMA79);
+            	            COMMA80=(Token)input.LT(1);
+            	            match(input,COMMA,FOLLOW_COMMA_in_rule_attributes1626); if (failed) return retval;
+            	            if ( backtracking==0 ) stream_COMMA.add(COMMA80);
 
 
             	            }
@@ -4106,9 +4144,9 @@
             	    }
 
             	    if ( backtracking==0 ) {
-            	      	emit(COMMA79, DroolsEditorType.SYMBOL);	
+            	      	emit(COMMA80, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes1627);
+            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes1633);
             	    attr=rule_attribute();
             	    _fsp--;
             	    if (failed) return retval;
@@ -4118,7 +4156,7 @@
             	    break;
 
             	default :
-            	    break loop34;
+            	    break loop35;
                 }
             } while (true);
 
@@ -4136,12 +4174,12 @@
             root_0 = (Object)adaptor.nil();
             // 681:3: -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:681:6: ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
+                // src/main/resources/org/drools/lang/DRL.g:681:6: ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_RULE_ATTRIBUTES, "VT_RULE_ATTRIBUTES"), root_1);
 
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:681:27: ( attributes_key )?
+                // src/main/resources/org/drools/lang/DRL.g:681:27: ( attributes_key )?
                 if ( stream_attributes_key.hasNext() ) {
                     adaptor.addChild(root_1, stream_attributes_key.next());
 
@@ -4188,93 +4226,93 @@
     };
 
     // $ANTLR start rule_attribute
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:684:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );
+    // src/main/resources/org/drools/lang/DRL.g:684:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );
     public final rule_attribute_return rule_attribute() throws RecognitionException {
         rule_attribute_return retval = new rule_attribute_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        salience_return salience80 = null;
+        salience_return salience81 = null;
 
-        no_loop_return no_loop81 = null;
+        no_loop_return no_loop82 = null;
 
-        agenda_group_return agenda_group82 = null;
+        agenda_group_return agenda_group83 = null;
 
-        duration_return duration83 = null;
+        duration_return duration84 = null;
 
-        activation_group_return activation_group84 = null;
+        activation_group_return activation_group85 = null;
 
-        auto_focus_return auto_focus85 = null;
+        auto_focus_return auto_focus86 = null;
 
-        date_effective_return date_effective86 = null;
+        date_effective_return date_effective87 = null;
 
-        date_expires_return date_expires87 = null;
+        date_expires_return date_expires88 = null;
 
-        enabled_return enabled88 = null;
+        enabled_return enabled89 = null;
 
-        ruleflow_group_return ruleflow_group89 = null;
+        ruleflow_group_return ruleflow_group90 = null;
 
-        lock_on_active_return lock_on_active90 = null;
+        lock_on_active_return lock_on_active91 = null;
 
-        dialect_return dialect91 = null;
+        dialect_return dialect92 = null;
 
 
 
          boolean isFailed = true; pushParaphrases(DroolsParaphraseTypes.RULE_ATTRIBUTE); 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:687:2: ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect )
-            int alt35=12;
-            int LA35_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:687:2: ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect )
+            int alt36=12;
+            int LA36_0 = input.LA(1);
 
-            if ( (LA35_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))))) {
-                int LA35_1 = input.LA(2);
+            if ( (LA36_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))||(validateIdentifierKey(DroolsSoftKeywo!
 rds.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))))) {
+                int LA36_1 = input.LA(2);
 
-                if ( (LA35_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))))) {
-                    int LA35_2 = input.LA(3);
+                if ( (LA36_1==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-"!
 ) && validateLT(3, DroolsSoftKeywords.EFFECTIVE))))) {
+                    int LA36_2 = input.LA(3);
 
-                    if ( (LA35_2==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.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))))) {
-                        int LA35_7 = input.LA(4);
+                    if ( (LA36_2==ID) && (((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "!
 -") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))))) {
+                        int LA36_7 = input.LA(4);
 
-                        if ( (LA35_7==MISC) && ((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))) {
-                            alt35=11;
+                        if ( (LA36_7==MISC) && ((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))) {
+                            alt36=11;
                         }
-                        else if ( (LA35_7==STRING) && (((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.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))))) {
-                            int LA35_10 = input.LA(5);
+                        else if ( (LA36_7==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))))) {
+                            int LA36_10 = input.LA(5);
 
                             if ( ((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))) ) {
-                                alt35=3;
+                                alt36=3;
                             }
                             else if ( ((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))) ) {
-                                alt35=5;
+                                alt36=5;
                             }
                             else if ( ((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))) ) {
-                                alt35=7;
+                                alt36=7;
                             }
                             else if ( ((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))) ) {
-                                alt35=8;
+                                alt36=8;
                             }
                             else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))) ) {
-                                alt35=10;
+                                alt36=10;
                             }
                             else {
                                 if (backtracking>0) {failed=true; return retval;}
                                 NoViableAltException nvae =
-                                    new NoViableAltException("684:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );", 35, 10, input);
+                                    new NoViableAltException("684:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );", 36, 10, input);
 
                                 throw nvae;
                             }
                         }
                         else if ( ((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))) ) {
-                            alt35=2;
+                            alt36=2;
                         }
                         else if ( ((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))) ) {
-                            alt35=6;
+                            alt36=6;
                         }
                         else {
                             if (backtracking>0) {failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("684:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );", 35, 7, input);
+                                new NoViableAltException("684:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );", 36, 7, input);
 
                             throw nvae;
                         }
@@ -4282,41 +4320,41 @@
                     else {
                         if (backtracking>0) {failed=true; return retval;}
                         NoViableAltException nvae =
-                            new NoViableAltException("684:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );", 35, 2, input);
+                            new NoViableAltException("684:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );", 36, 2, input);
 
                         throw nvae;
                     }
                 }
-                else if ( (LA35_1==INT) && (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))))) {
-                    int LA35_3 = input.LA(3);
+                else if ( (LA36_1==INT) && (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))))) {
+                    int LA36_3 = input.LA(3);
 
                     if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {
-                        alt35=1;
+                        alt36=1;
                     }
                     else if ( ((validateIdentifierKey(DroolsSoftKeywords.DURATION))) ) {
-                        alt35=4;
+                        alt36=4;
                     }
                     else {
                         if (backtracking>0) {failed=true; return retval;}
                         NoViableAltException nvae =
-                            new NoViableAltException("684:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );", 35, 3, input);
+                            new NoViableAltException("684:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );", 36, 3, input);
 
                         throw nvae;
                     }
                 }
-                else if ( (LA35_1==BOOL) && ((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))) {
-                    alt35=9;
+                else if ( (LA36_1==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {
+                    alt36=1;
                 }
-                else if ( (LA35_1==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {
-                    alt35=1;
+                else if ( (LA36_1==STRING) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {
+                    alt36=12;
                 }
-                else if ( (LA35_1==STRING) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {
-                    alt35=12;
+                else if ( (LA36_1==BOOL) && ((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))) {
+                    alt36=9;
                 }
                 else {
                     if (backtracking>0) {failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("684:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );", 35, 1, input);
+                        new NoViableAltException("684:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );", 36, 1, input);
 
                     throw nvae;
                 }
@@ -4324,164 +4362,164 @@
             else {
                 if (backtracking>0) {failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("684:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );", 35, 0, input);
+                    new NoViableAltException("684:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );", 36, 0, input);
 
                 throw nvae;
             }
-            switch (alt35) {
+            switch (alt36) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:687:4: salience
+                    // src/main/resources/org/drools/lang/DRL.g:687:4: salience
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_salience_in_rule_attribute1666);
-                    salience80=salience();
+                    pushFollow(FOLLOW_salience_in_rule_attribute1672);
+                    salience81=salience();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, salience80.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, salience81.getTree());
 
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:688:4: no_loop
+                    // src/main/resources/org/drools/lang/DRL.g:688:4: no_loop
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_no_loop_in_rule_attribute1672);
-                    no_loop81=no_loop();
+                    pushFollow(FOLLOW_no_loop_in_rule_attribute1678);
+                    no_loop82=no_loop();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, no_loop81.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, no_loop82.getTree());
 
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:689:4: agenda_group
+                    // src/main/resources/org/drools/lang/DRL.g:689:4: agenda_group
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_agenda_group_in_rule_attribute1677);
-                    agenda_group82=agenda_group();
+                    pushFollow(FOLLOW_agenda_group_in_rule_attribute1683);
+                    agenda_group83=agenda_group();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, agenda_group82.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, agenda_group83.getTree());
 
                     }
                     break;
                 case 4 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:690:4: duration
+                    // src/main/resources/org/drools/lang/DRL.g:690:4: duration
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_duration_in_rule_attribute1684);
-                    duration83=duration();
+                    pushFollow(FOLLOW_duration_in_rule_attribute1690);
+                    duration84=duration();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, duration83.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, duration84.getTree());
 
                     }
                     break;
                 case 5 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:691:4: activation_group
+                    // src/main/resources/org/drools/lang/DRL.g:691:4: activation_group
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_activation_group_in_rule_attribute1691);
-                    activation_group84=activation_group();
+                    pushFollow(FOLLOW_activation_group_in_rule_attribute1697);
+                    activation_group85=activation_group();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, activation_group84.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, activation_group85.getTree());
 
                     }
                     break;
                 case 6 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:692:4: auto_focus
+                    // src/main/resources/org/drools/lang/DRL.g:692:4: auto_focus
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_auto_focus_in_rule_attribute1697);
-                    auto_focus85=auto_focus();
+                    pushFollow(FOLLOW_auto_focus_in_rule_attribute1703);
+                    auto_focus86=auto_focus();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, auto_focus85.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, auto_focus86.getTree());
 
                     }
                     break;
                 case 7 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:693:4: date_effective
+                    // src/main/resources/org/drools/lang/DRL.g:693:4: date_effective
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_date_effective_in_rule_attribute1703);
-                    date_effective86=date_effective();
+                    pushFollow(FOLLOW_date_effective_in_rule_attribute1709);
+                    date_effective87=date_effective();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, date_effective86.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, date_effective87.getTree());
 
                     }
                     break;
                 case 8 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:694:4: date_expires
+                    // src/main/resources/org/drools/lang/DRL.g:694:4: date_expires
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_date_expires_in_rule_attribute1709);
-                    date_expires87=date_expires();
+                    pushFollow(FOLLOW_date_expires_in_rule_attribute1715);
+                    date_expires88=date_expires();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, date_expires87.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, date_expires88.getTree());
 
                     }
                     break;
                 case 9 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:695:4: enabled
+                    // src/main/resources/org/drools/lang/DRL.g:695:4: enabled
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_enabled_in_rule_attribute1715);
-                    enabled88=enabled();
+                    pushFollow(FOLLOW_enabled_in_rule_attribute1721);
+                    enabled89=enabled();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, enabled88.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, enabled89.getTree());
 
                     }
                     break;
                 case 10 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:696:4: ruleflow_group
+                    // src/main/resources/org/drools/lang/DRL.g:696:4: ruleflow_group
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_ruleflow_group_in_rule_attribute1721);
-                    ruleflow_group89=ruleflow_group();
+                    pushFollow(FOLLOW_ruleflow_group_in_rule_attribute1727);
+                    ruleflow_group90=ruleflow_group();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, ruleflow_group89.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, ruleflow_group90.getTree());
 
                     }
                     break;
                 case 11 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:697:4: lock_on_active
+                    // src/main/resources/org/drools/lang/DRL.g:697:4: lock_on_active
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_lock_on_active_in_rule_attribute1727);
-                    lock_on_active90=lock_on_active();
+                    pushFollow(FOLLOW_lock_on_active_in_rule_attribute1733);
+                    lock_on_active91=lock_on_active();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, lock_on_active90.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, lock_on_active91.getTree());
 
                     }
                     break;
                 case 12 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:698:4: dialect
+                    // src/main/resources/org/drools/lang/DRL.g:698:4: dialect
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_dialect_in_rule_attribute1732);
-                    dialect91=dialect();
+                    pushFollow(FOLLOW_dialect_in_rule_attribute1738);
+                    dialect92=dialect();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, dialect91.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, dialect92.getTree());
 
                     }
                     break;
@@ -4555,41 +4593,41 @@
     };
 
     // $ANTLR start date_effective
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:743:1: date_effective : date_effective_key STRING ;
+    // src/main/resources/org/drools/lang/DRL.g:743:1: date_effective : date_effective_key STRING ;
     public final date_effective_return date_effective() throws RecognitionException {
         date_effective_return retval = new date_effective_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token STRING93=null;
-        date_effective_key_return date_effective_key92 = null;
+        Token STRING94=null;
+        date_effective_key_return date_effective_key93 = null;
 
 
-        Object STRING93_tree=null;
+        Object STRING94_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:744:2: ( date_effective_key STRING )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:744:4: date_effective_key STRING
+            // src/main/resources/org/drools/lang/DRL.g:744:2: ( date_effective_key STRING )
+            // src/main/resources/org/drools/lang/DRL.g:744:4: date_effective_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_date_effective_key_in_date_effective1748);
-            date_effective_key92=date_effective_key();
+            pushFollow(FOLLOW_date_effective_key_in_date_effective1754);
+            date_effective_key93=date_effective_key();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(date_effective_key92.getTree(), root_0);
+            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(date_effective_key93.getTree(), root_0);
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING93=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_date_effective1753); if (failed) return retval;
+            STRING94=(Token)input.LT(1);
+            match(input,STRING,FOLLOW_STRING_in_date_effective1759); if (failed) return retval;
             if ( backtracking==0 ) {
-            STRING93_tree = (Object)adaptor.create(STRING93);
-            adaptor.addChild(root_0, STRING93_tree);
+            STRING94_tree = (Object)adaptor.create(STRING94);
+            adaptor.addChild(root_0, STRING94_tree);
             }
             if ( backtracking==0 ) {
-              	emit(STRING93, DroolsEditorType.STRING_CONST );	
+              	emit(STRING94, DroolsEditorType.STRING_CONST );	
             }
 
             }
@@ -4617,41 +4655,41 @@
     };
 
     // $ANTLR start date_expires
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:748:1: date_expires : date_expires_key STRING ;
+    // src/main/resources/org/drools/lang/DRL.g:748:1: date_expires : date_expires_key STRING ;
     public final date_expires_return date_expires() throws RecognitionException {
         date_expires_return retval = new date_expires_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token STRING95=null;
-        date_expires_key_return date_expires_key94 = null;
+        Token STRING96=null;
+        date_expires_key_return date_expires_key95 = null;
 
 
-        Object STRING95_tree=null;
+        Object STRING96_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:749:2: ( date_expires_key STRING )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:749:4: date_expires_key STRING
+            // src/main/resources/org/drools/lang/DRL.g:749:2: ( date_expires_key STRING )
+            // src/main/resources/org/drools/lang/DRL.g:749:4: date_expires_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_date_expires_key_in_date_expires1767);
-            date_expires_key94=date_expires_key();
+            pushFollow(FOLLOW_date_expires_key_in_date_expires1773);
+            date_expires_key95=date_expires_key();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(date_expires_key94.getTree(), root_0);
+            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(date_expires_key95.getTree(), root_0);
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING95=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_date_expires1772); if (failed) return retval;
+            STRING96=(Token)input.LT(1);
+            match(input,STRING,FOLLOW_STRING_in_date_expires1778); if (failed) return retval;
             if ( backtracking==0 ) {
-            STRING95_tree = (Object)adaptor.create(STRING95);
-            adaptor.addChild(root_0, STRING95_tree);
+            STRING96_tree = (Object)adaptor.create(STRING96);
+            adaptor.addChild(root_0, STRING96_tree);
             }
             if ( backtracking==0 ) {
-              	emit(STRING95, DroolsEditorType.STRING_CONST );	
+              	emit(STRING96, DroolsEditorType.STRING_CONST );	
             }
 
             }
@@ -4679,41 +4717,41 @@
     };
 
     // $ANTLR start enabled
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:753:1: enabled : enabled_key BOOL ;
+    // src/main/resources/org/drools/lang/DRL.g:753:1: enabled : enabled_key BOOL ;
     public final enabled_return enabled() throws RecognitionException {
         enabled_return retval = new enabled_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token BOOL97=null;
-        enabled_key_return enabled_key96 = null;
+        Token BOOL98=null;
+        enabled_key_return enabled_key97 = null;
 
 
-        Object BOOL97_tree=null;
+        Object BOOL98_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:754:2: ( enabled_key BOOL )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:754:4: enabled_key BOOL
+            // src/main/resources/org/drools/lang/DRL.g:754:2: ( enabled_key BOOL )
+            // src/main/resources/org/drools/lang/DRL.g:754:4: enabled_key BOOL
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_enabled_key_in_enabled1787);
-            enabled_key96=enabled_key();
+            pushFollow(FOLLOW_enabled_key_in_enabled1793);
+            enabled_key97=enabled_key();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(enabled_key96.getTree(), root_0);
+            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(enabled_key97.getTree(), root_0);
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            BOOL97=(Token)input.LT(1);
-            match(input,BOOL,FOLLOW_BOOL_in_enabled1792); if (failed) return retval;
+            BOOL98=(Token)input.LT(1);
+            match(input,BOOL,FOLLOW_BOOL_in_enabled1798); if (failed) return retval;
             if ( backtracking==0 ) {
-            BOOL97_tree = (Object)adaptor.create(BOOL97);
-            adaptor.addChild(root_0, BOOL97_tree);
+            BOOL98_tree = (Object)adaptor.create(BOOL98);
+            adaptor.addChild(root_0, BOOL98_tree);
             }
             if ( backtracking==0 ) {
-              	emit(BOOL97, DroolsEditorType.BOOLEAN_CONST );	
+              	emit(BOOL98, DroolsEditorType.BOOLEAN_CONST );	
             }
 
             }
@@ -4741,76 +4779,76 @@
     };
 
     // $ANTLR start salience
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:758:1: salience : salience_key ( INT | paren_chunk ) ;
+    // src/main/resources/org/drools/lang/DRL.g:758:1: salience : salience_key ( INT | paren_chunk ) ;
     public final salience_return salience() throws RecognitionException {
         salience_return retval = new salience_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token INT99=null;
-        salience_key_return salience_key98 = null;
+        Token INT100=null;
+        salience_key_return salience_key99 = null;
 
-        paren_chunk_return paren_chunk100 = null;
+        paren_chunk_return paren_chunk101 = null;
 
 
-        Object INT99_tree=null;
+        Object INT100_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:759:2: ( salience_key ( INT | paren_chunk ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:759:4: salience_key ( INT | paren_chunk )
+            // src/main/resources/org/drools/lang/DRL.g:759:2: ( salience_key ( INT | paren_chunk ) )
+            // src/main/resources/org/drools/lang/DRL.g:759:4: salience_key ( INT | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_salience_key_in_salience1807);
-            salience_key98=salience_key();
+            pushFollow(FOLLOW_salience_key_in_salience1813);
+            salience_key99=salience_key();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(salience_key98.getTree(), root_0);
+            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(salience_key99.getTree(), root_0);
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:760:3: ( INT | paren_chunk )
-            int alt36=2;
-            int LA36_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:760:3: ( INT | paren_chunk )
+            int alt37=2;
+            int LA37_0 = input.LA(1);
 
-            if ( (LA36_0==INT) ) {
-                alt36=1;
+            if ( (LA37_0==INT) ) {
+                alt37=1;
             }
-            else if ( (LA36_0==LEFT_PAREN) ) {
-                alt36=2;
+            else if ( (LA37_0==LEFT_PAREN) ) {
+                alt37=2;
             }
             else {
                 if (backtracking>0) {failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("760:3: ( INT | paren_chunk )", 36, 0, input);
+                    new NoViableAltException("760:3: ( INT | paren_chunk )", 37, 0, input);
 
                 throw nvae;
             }
-            switch (alt36) {
+            switch (alt37) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:760:5: INT
+                    // src/main/resources/org/drools/lang/DRL.g:760:5: INT
                     {
-                    INT99=(Token)input.LT(1);
-                    match(input,INT,FOLLOW_INT_in_salience1816); if (failed) return retval;
+                    INT100=(Token)input.LT(1);
+                    match(input,INT,FOLLOW_INT_in_salience1822); if (failed) return retval;
                     if ( backtracking==0 ) {
-                    INT99_tree = (Object)adaptor.create(INT99);
-                    adaptor.addChild(root_0, INT99_tree);
+                    INT100_tree = (Object)adaptor.create(INT100);
+                    adaptor.addChild(root_0, INT100_tree);
                     }
                     if ( backtracking==0 ) {
-                      	emit(INT99, DroolsEditorType.NUMERIC_CONST );	
+                      	emit(INT100, DroolsEditorType.NUMERIC_CONST );	
                     }
 
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:761:5: paren_chunk
+                    // src/main/resources/org/drools/lang/DRL.g:761:5: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_salience1825);
-                    paren_chunk100=paren_chunk();
+                    pushFollow(FOLLOW_paren_chunk_in_salience1831);
+                    paren_chunk101=paren_chunk();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, paren_chunk100.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, paren_chunk101.getTree());
 
                     }
                     break;
@@ -4843,49 +4881,49 @@
     };
 
     // $ANTLR start no_loop
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:765:1: no_loop : no_loop_key ( BOOL )? ;
+    // src/main/resources/org/drools/lang/DRL.g:765:1: no_loop : no_loop_key ( BOOL )? ;
     public final no_loop_return no_loop() throws RecognitionException {
         no_loop_return retval = new no_loop_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token BOOL102=null;
-        no_loop_key_return no_loop_key101 = null;
+        Token BOOL103=null;
+        no_loop_key_return no_loop_key102 = null;
 
 
-        Object BOOL102_tree=null;
+        Object BOOL103_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:766:2: ( no_loop_key ( BOOL )? )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:766:4: no_loop_key ( BOOL )?
+            // src/main/resources/org/drools/lang/DRL.g:766:2: ( no_loop_key ( BOOL )? )
+            // src/main/resources/org/drools/lang/DRL.g:766:4: no_loop_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_no_loop_key_in_no_loop1840);
-            no_loop_key101=no_loop_key();
+            pushFollow(FOLLOW_no_loop_key_in_no_loop1846);
+            no_loop_key102=no_loop_key();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(no_loop_key101.getTree(), root_0);
+            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(no_loop_key102.getTree(), root_0);
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:766:66: ( BOOL )?
-            int alt37=2;
-            int LA37_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:766:66: ( BOOL )?
+            int alt38=2;
+            int LA38_0 = input.LA(1);
 
-            if ( (LA37_0==BOOL) ) {
-                alt37=1;
+            if ( (LA38_0==BOOL) ) {
+                alt38=1;
             }
-            switch (alt37) {
+            switch (alt38) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:766:66: BOOL
+                    // src/main/resources/org/drools/lang/DRL.g:766:66: BOOL
                     {
-                    BOOL102=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_no_loop1845); if (failed) return retval;
+                    BOOL103=(Token)input.LT(1);
+                    match(input,BOOL,FOLLOW_BOOL_in_no_loop1851); if (failed) return retval;
                     if ( backtracking==0 ) {
-                    BOOL102_tree = (Object)adaptor.create(BOOL102);
-                    adaptor.addChild(root_0, BOOL102_tree);
+                    BOOL103_tree = (Object)adaptor.create(BOOL103);
+                    adaptor.addChild(root_0, BOOL103_tree);
                     }
 
                     }
@@ -4894,7 +4932,7 @@
             }
 
             if ( backtracking==0 ) {
-              	emit(BOOL102, DroolsEditorType.BOOLEAN_CONST );	
+              	emit(BOOL103, DroolsEditorType.BOOLEAN_CONST );	
             }
 
             }
@@ -4922,49 +4960,49 @@
     };
 
     // $ANTLR start auto_focus
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:770:1: auto_focus : auto_focus_key ( BOOL )? ;
+    // src/main/resources/org/drools/lang/DRL.g:770:1: auto_focus : auto_focus_key ( BOOL )? ;
     public final auto_focus_return auto_focus() throws RecognitionException {
         auto_focus_return retval = new auto_focus_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token BOOL104=null;
-        auto_focus_key_return auto_focus_key103 = null;
+        Token BOOL105=null;
+        auto_focus_key_return auto_focus_key104 = null;
 
 
-        Object BOOL104_tree=null;
+        Object BOOL105_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:771:2: ( auto_focus_key ( BOOL )? )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:771:4: auto_focus_key ( BOOL )?
+            // src/main/resources/org/drools/lang/DRL.g:771:2: ( auto_focus_key ( BOOL )? )
+            // src/main/resources/org/drools/lang/DRL.g:771:4: auto_focus_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_auto_focus_key_in_auto_focus1860);
-            auto_focus_key103=auto_focus_key();
+            pushFollow(FOLLOW_auto_focus_key_in_auto_focus1866);
+            auto_focus_key104=auto_focus_key();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(auto_focus_key103.getTree(), root_0);
+            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(auto_focus_key104.getTree(), root_0);
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:771:69: ( BOOL )?
-            int alt38=2;
-            int LA38_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:771:69: ( BOOL )?
+            int alt39=2;
+            int LA39_0 = input.LA(1);
 
-            if ( (LA38_0==BOOL) ) {
-                alt38=1;
+            if ( (LA39_0==BOOL) ) {
+                alt39=1;
             }
-            switch (alt38) {
+            switch (alt39) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:771:69: BOOL
+                    // src/main/resources/org/drools/lang/DRL.g:771:69: BOOL
                     {
-                    BOOL104=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_auto_focus1865); if (failed) return retval;
+                    BOOL105=(Token)input.LT(1);
+                    match(input,BOOL,FOLLOW_BOOL_in_auto_focus1871); if (failed) return retval;
                     if ( backtracking==0 ) {
-                    BOOL104_tree = (Object)adaptor.create(BOOL104);
-                    adaptor.addChild(root_0, BOOL104_tree);
+                    BOOL105_tree = (Object)adaptor.create(BOOL105);
+                    adaptor.addChild(root_0, BOOL105_tree);
                     }
 
                     }
@@ -4973,7 +5011,7 @@
             }
 
             if ( backtracking==0 ) {
-              	emit(BOOL104, DroolsEditorType.BOOLEAN_CONST );	
+              	emit(BOOL105, DroolsEditorType.BOOLEAN_CONST );	
             }
 
             }
@@ -5001,41 +5039,41 @@
     };
 
     // $ANTLR start activation_group
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:775:1: activation_group : activation_group_key STRING ;
+    // src/main/resources/org/drools/lang/DRL.g:775:1: activation_group : activation_group_key STRING ;
     public final activation_group_return activation_group() throws RecognitionException {
         activation_group_return retval = new activation_group_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token STRING106=null;
-        activation_group_key_return activation_group_key105 = null;
+        Token STRING107=null;
+        activation_group_key_return activation_group_key106 = null;
 
 
-        Object STRING106_tree=null;
+        Object STRING107_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:776:2: ( activation_group_key STRING )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:776:4: activation_group_key STRING
+            // src/main/resources/org/drools/lang/DRL.g:776:2: ( activation_group_key STRING )
+            // src/main/resources/org/drools/lang/DRL.g:776:4: activation_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_activation_group_key_in_activation_group1882);
-            activation_group_key105=activation_group_key();
+            pushFollow(FOLLOW_activation_group_key_in_activation_group1888);
+            activation_group_key106=activation_group_key();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(activation_group_key105.getTree(), root_0);
+            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(activation_group_key106.getTree(), root_0);
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING106=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_activation_group1887); if (failed) return retval;
+            STRING107=(Token)input.LT(1);
+            match(input,STRING,FOLLOW_STRING_in_activation_group1893); if (failed) return retval;
             if ( backtracking==0 ) {
-            STRING106_tree = (Object)adaptor.create(STRING106);
-            adaptor.addChild(root_0, STRING106_tree);
+            STRING107_tree = (Object)adaptor.create(STRING107);
+            adaptor.addChild(root_0, STRING107_tree);
             }
             if ( backtracking==0 ) {
-              	emit(STRING106, DroolsEditorType.STRING_CONST );	
+              	emit(STRING107, DroolsEditorType.STRING_CONST );	
             }
 
             }
@@ -5063,41 +5101,41 @@
     };
 
     // $ANTLR start ruleflow_group
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:780:1: ruleflow_group : ruleflow_group_key STRING ;
+    // src/main/resources/org/drools/lang/DRL.g:780:1: ruleflow_group : ruleflow_group_key STRING ;
     public final ruleflow_group_return ruleflow_group() throws RecognitionException {
         ruleflow_group_return retval = new ruleflow_group_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token STRING108=null;
-        ruleflow_group_key_return ruleflow_group_key107 = null;
+        Token STRING109=null;
+        ruleflow_group_key_return ruleflow_group_key108 = null;
 
 
-        Object STRING108_tree=null;
+        Object STRING109_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:781:2: ( ruleflow_group_key STRING )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:781:4: ruleflow_group_key STRING
+            // src/main/resources/org/drools/lang/DRL.g:781:2: ( ruleflow_group_key STRING )
+            // src/main/resources/org/drools/lang/DRL.g:781:4: ruleflow_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_ruleflow_group_key_in_ruleflow_group1901);
-            ruleflow_group_key107=ruleflow_group_key();
+            pushFollow(FOLLOW_ruleflow_group_key_in_ruleflow_group1907);
+            ruleflow_group_key108=ruleflow_group_key();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(ruleflow_group_key107.getTree(), root_0);
+            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(ruleflow_group_key108.getTree(), root_0);
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING108=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_ruleflow_group1906); if (failed) return retval;
+            STRING109=(Token)input.LT(1);
+            match(input,STRING,FOLLOW_STRING_in_ruleflow_group1912); if (failed) return retval;
             if ( backtracking==0 ) {
-            STRING108_tree = (Object)adaptor.create(STRING108);
-            adaptor.addChild(root_0, STRING108_tree);
+            STRING109_tree = (Object)adaptor.create(STRING109);
+            adaptor.addChild(root_0, STRING109_tree);
             }
             if ( backtracking==0 ) {
-              	emit(STRING108, DroolsEditorType.STRING_CONST );	
+              	emit(STRING109, DroolsEditorType.STRING_CONST );	
             }
 
             }
@@ -5125,41 +5163,41 @@
     };
 
     // $ANTLR start agenda_group
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:785:1: agenda_group : agenda_group_key STRING ;
+    // src/main/resources/org/drools/lang/DRL.g:785:1: agenda_group : agenda_group_key STRING ;
     public final agenda_group_return agenda_group() throws RecognitionException {
         agenda_group_return retval = new agenda_group_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token STRING110=null;
-        agenda_group_key_return agenda_group_key109 = null;
+        Token STRING111=null;
+        agenda_group_key_return agenda_group_key110 = null;
 
 
-        Object STRING110_tree=null;
+        Object STRING111_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:786:2: ( agenda_group_key STRING )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:786:4: agenda_group_key STRING
+            // src/main/resources/org/drools/lang/DRL.g:786:2: ( agenda_group_key STRING )
+            // src/main/resources/org/drools/lang/DRL.g:786:4: agenda_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_agenda_group_key_in_agenda_group1920);
-            agenda_group_key109=agenda_group_key();
+            pushFollow(FOLLOW_agenda_group_key_in_agenda_group1926);
+            agenda_group_key110=agenda_group_key();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(agenda_group_key109.getTree(), root_0);
+            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(agenda_group_key110.getTree(), root_0);
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING110=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_agenda_group1925); if (failed) return retval;
+            STRING111=(Token)input.LT(1);
+            match(input,STRING,FOLLOW_STRING_in_agenda_group1931); if (failed) return retval;
             if ( backtracking==0 ) {
-            STRING110_tree = (Object)adaptor.create(STRING110);
-            adaptor.addChild(root_0, STRING110_tree);
+            STRING111_tree = (Object)adaptor.create(STRING111);
+            adaptor.addChild(root_0, STRING111_tree);
             }
             if ( backtracking==0 ) {
-              	emit(STRING110, DroolsEditorType.STRING_CONST );	
+              	emit(STRING111, DroolsEditorType.STRING_CONST );	
             }
 
             }
@@ -5187,41 +5225,41 @@
     };
 
     // $ANTLR start duration
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:790:1: duration : duration_key INT ;
+    // src/main/resources/org/drools/lang/DRL.g:790:1: duration : duration_key INT ;
     public final duration_return duration() throws RecognitionException {
         duration_return retval = new duration_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token INT112=null;
-        duration_key_return duration_key111 = null;
+        Token INT113=null;
+        duration_key_return duration_key112 = null;
 
 
-        Object INT112_tree=null;
+        Object INT113_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:791:2: ( duration_key INT )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:791:4: duration_key INT
+            // src/main/resources/org/drools/lang/DRL.g:791:2: ( duration_key INT )
+            // src/main/resources/org/drools/lang/DRL.g:791:4: duration_key INT
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_duration_key_in_duration1939);
-            duration_key111=duration_key();
+            pushFollow(FOLLOW_duration_key_in_duration1945);
+            duration_key112=duration_key();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(duration_key111.getTree(), root_0);
+            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(duration_key112.getTree(), root_0);
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            INT112=(Token)input.LT(1);
-            match(input,INT,FOLLOW_INT_in_duration1944); if (failed) return retval;
+            INT113=(Token)input.LT(1);
+            match(input,INT,FOLLOW_INT_in_duration1950); if (failed) return retval;
             if ( backtracking==0 ) {
-            INT112_tree = (Object)adaptor.create(INT112);
-            adaptor.addChild(root_0, INT112_tree);
+            INT113_tree = (Object)adaptor.create(INT113);
+            adaptor.addChild(root_0, INT113_tree);
             }
             if ( backtracking==0 ) {
-              	emit(INT112, DroolsEditorType.NUMERIC_CONST );	
+              	emit(INT113, DroolsEditorType.NUMERIC_CONST );	
             }
 
             }
@@ -5249,41 +5287,41 @@
     };
 
     // $ANTLR start dialect
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:795:1: dialect : dialect_key STRING ;
+    // src/main/resources/org/drools/lang/DRL.g:795:1: dialect : dialect_key STRING ;
     public final dialect_return dialect() throws RecognitionException {
         dialect_return retval = new dialect_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token STRING114=null;
-        dialect_key_return dialect_key113 = null;
+        Token STRING115=null;
+        dialect_key_return dialect_key114 = null;
 
 
-        Object STRING114_tree=null;
+        Object STRING115_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:796:2: ( dialect_key STRING )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:796:4: dialect_key STRING
+            // src/main/resources/org/drools/lang/DRL.g:796:2: ( dialect_key STRING )
+            // src/main/resources/org/drools/lang/DRL.g:796:4: dialect_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_dialect_key_in_dialect1960);
-            dialect_key113=dialect_key();
+            pushFollow(FOLLOW_dialect_key_in_dialect1966);
+            dialect_key114=dialect_key();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(dialect_key113.getTree(), root_0);
+            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(dialect_key114.getTree(), root_0);
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING114=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_dialect1965); if (failed) return retval;
+            STRING115=(Token)input.LT(1);
+            match(input,STRING,FOLLOW_STRING_in_dialect1971); if (failed) return retval;
             if ( backtracking==0 ) {
-            STRING114_tree = (Object)adaptor.create(STRING114);
-            adaptor.addChild(root_0, STRING114_tree);
+            STRING115_tree = (Object)adaptor.create(STRING115);
+            adaptor.addChild(root_0, STRING115_tree);
             }
             if ( backtracking==0 ) {
-              	emit(STRING114, DroolsEditorType.STRING_CONST );	
+              	emit(STRING115, DroolsEditorType.STRING_CONST );	
             }
 
             }
@@ -5311,49 +5349,49 @@
     };
 
     // $ANTLR start lock_on_active
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:800:1: lock_on_active : lock_on_active_key ( BOOL )? ;
+    // src/main/resources/org/drools/lang/DRL.g:800:1: lock_on_active : lock_on_active_key ( BOOL )? ;
     public final lock_on_active_return lock_on_active() throws RecognitionException {
         lock_on_active_return retval = new lock_on_active_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token BOOL116=null;
-        lock_on_active_key_return lock_on_active_key115 = null;
+        Token BOOL117=null;
+        lock_on_active_key_return lock_on_active_key116 = null;
 
 
-        Object BOOL116_tree=null;
+        Object BOOL117_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:801:2: ( lock_on_active_key ( BOOL )? )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:801:4: lock_on_active_key ( BOOL )?
+            // src/main/resources/org/drools/lang/DRL.g:801:2: ( lock_on_active_key ( BOOL )? )
+            // src/main/resources/org/drools/lang/DRL.g:801:4: lock_on_active_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_lock_on_active_key_in_lock_on_active1983);
-            lock_on_active_key115=lock_on_active_key();
+            pushFollow(FOLLOW_lock_on_active_key_in_lock_on_active1989);
+            lock_on_active_key116=lock_on_active_key();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(lock_on_active_key115.getTree(), root_0);
+            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(lock_on_active_key116.getTree(), root_0);
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:801:73: ( BOOL )?
-            int alt39=2;
-            int LA39_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:801:73: ( BOOL )?
+            int alt40=2;
+            int LA40_0 = input.LA(1);
 
-            if ( (LA39_0==BOOL) ) {
-                alt39=1;
+            if ( (LA40_0==BOOL) ) {
+                alt40=1;
             }
-            switch (alt39) {
+            switch (alt40) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:801:73: BOOL
+                    // src/main/resources/org/drools/lang/DRL.g:801:73: BOOL
                     {
-                    BOOL116=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_lock_on_active1988); if (failed) return retval;
+                    BOOL117=(Token)input.LT(1);
+                    match(input,BOOL,FOLLOW_BOOL_in_lock_on_active1994); if (failed) return retval;
                     if ( backtracking==0 ) {
-                    BOOL116_tree = (Object)adaptor.create(BOOL116);
-                    adaptor.addChild(root_0, BOOL116_tree);
+                    BOOL117_tree = (Object)adaptor.create(BOOL117);
+                    adaptor.addChild(root_0, BOOL117_tree);
                     }
 
                     }
@@ -5362,7 +5400,7 @@
             }
 
             if ( backtracking==0 ) {
-              	emit(BOOL116, DroolsEditorType.BOOLEAN_CONST );	
+              	emit(BOOL117, DroolsEditorType.BOOLEAN_CONST );	
             }
 
             }
@@ -5390,47 +5428,47 @@
     };
 
     // $ANTLR start normal_lhs_block
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:805:1: normal_lhs_block : ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) ;
+    // src/main/resources/org/drools/lang/DRL.g:805:1: normal_lhs_block : ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) ;
     public final normal_lhs_block_return normal_lhs_block() throws RecognitionException {
         normal_lhs_block_return retval = new normal_lhs_block_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        lhs_return lhs117 = null;
+        lhs_return lhs118 = null;
 
 
         RewriteRuleSubtreeStream stream_lhs=new RewriteRuleSubtreeStream(adaptor,"rule lhs");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:806:2: ( ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:806:4: ( lhs )*
+            // src/main/resources/org/drools/lang/DRL.g:806:2: ( ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) )
+            // src/main/resources/org/drools/lang/DRL.g:806:4: ( lhs )*
             {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:806:4: ( lhs )*
-            loop40:
+            // src/main/resources/org/drools/lang/DRL.g:806:4: ( lhs )*
+            loop41:
             do {
-                int alt40=2;
-                int LA40_0 = input.LA(1);
+                int alt41=2;
+                int LA41_0 = input.LA(1);
 
-                if ( (LA40_0==ID||LA40_0==LEFT_PAREN) ) {
-                    alt40=1;
+                if ( (LA41_0==ID||LA41_0==LEFT_PAREN) ) {
+                    alt41=1;
                 }
 
 
-                switch (alt40) {
+                switch (alt41) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:806:4: lhs
+            	    // src/main/resources/org/drools/lang/DRL.g:806:4: lhs
             	    {
-            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block2003);
-            	    lhs117=lhs();
+            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block2009);
+            	    lhs118=lhs();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_lhs.add(lhs117.getTree());
+            	    if ( backtracking==0 ) stream_lhs.add(lhs118.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop40;
+            	    break loop41;
                 }
             } while (true);
 
@@ -5448,12 +5486,12 @@
             root_0 = (Object)adaptor.nil();
             // 807:2: -> ^( VT_AND_IMPLICIT ( lhs )* )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:807:5: ^( VT_AND_IMPLICIT ( lhs )* )
+                // src/main/resources/org/drools/lang/DRL.g:807:5: ^( VT_AND_IMPLICIT ( lhs )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_AND_IMPLICIT, "VT_AND_IMPLICIT"), root_1);
 
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:807:23: ( lhs )*
+                // src/main/resources/org/drools/lang/DRL.g:807:23: ( lhs )*
                 while ( stream_lhs.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs.next());
 
@@ -5492,28 +5530,28 @@
     };
 
     // $ANTLR start lhs
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:810:1: lhs : lhs_or ;
+    // src/main/resources/org/drools/lang/DRL.g:810:1: lhs : lhs_or ;
     public final lhs_return lhs() throws RecognitionException {
         lhs_return retval = new lhs_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        lhs_or_return lhs_or118 = null;
+        lhs_or_return lhs_or119 = null;
 
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:810:5: ( lhs_or )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:810:7: lhs_or
+            // src/main/resources/org/drools/lang/DRL.g:810:5: ( lhs_or )
+            // src/main/resources/org/drools/lang/DRL.g:810:7: lhs_or
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_lhs_or_in_lhs2024);
-            lhs_or118=lhs_or();
+            pushFollow(FOLLOW_lhs_or_in_lhs2030);
+            lhs_or119=lhs_or();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, lhs_or118.getTree());
+            if ( backtracking==0 ) adaptor.addChild(root_0, lhs_or119.getTree());
 
             }
 
@@ -5540,7 +5578,7 @@
     };
 
     // $ANTLR start lhs_or
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:813:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );
+    // src/main/resources/org/drools/lang/DRL.g:813:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );
     public final lhs_or_return lhs_or() throws RecognitionException {
         lhs_or_return retval = new lhs_or_return();
         retval.start = input.LT(1);
@@ -5548,22 +5586,22 @@
         Object root_0 = null;
 
         Token pipe=null;
-        Token LEFT_PAREN119=null;
-        Token RIGHT_PAREN121=null;
+        Token LEFT_PAREN120=null;
+        Token RIGHT_PAREN122=null;
         or_key_return or = null;
 
         or_key_return value = null;
 
-        lhs_and_return lhs_and120 = null;
+        lhs_and_return lhs_and121 = null;
 
-        lhs_and_return lhs_and122 = null;
-
         lhs_and_return lhs_and123 = null;
 
+        lhs_and_return lhs_and124 = null;
 
+
         Object pipe_tree=null;
-        Object LEFT_PAREN119_tree=null;
-        Object RIGHT_PAREN121_tree=null;
+        Object LEFT_PAREN120_tree=null;
+        Object RIGHT_PAREN122_tree=null;
         RewriteRuleTokenStream stream_DOUBLE_PIPE=new RewriteRuleTokenStream(adaptor,"token DOUBLE_PIPE");
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
@@ -5573,36 +5611,39 @@
         	Token orToken = null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:816:3: ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* )
-            int alt44=2;
-            int LA44_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:816:3: ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* )
+            int alt45=2;
+            int LA45_0 = input.LA(1);
 
-            if ( (LA44_0==LEFT_PAREN) ) {
-                int LA44_1 = input.LA(2);
+            if ( (LA45_0==LEFT_PAREN) ) {
+                int LA45_1 = input.LA(2);
 
-                if ( (LA44_1==ID) ) {
+                if ( (LA45_1==LEFT_PAREN) ) {
+                    alt45=2;
+                }
+                else if ( (LA45_1==ID) ) {
                     switch ( input.LA(3) ) {
                     case DOT:
                     case COLON:
                     case LEFT_SQUARE:
                         {
-                        alt44=2;
+                        alt45=2;
                         }
                         break;
                     case LEFT_PAREN:
                         {
-                        int LA44_4 = input.LA(4);
+                        int LA45_4 = input.LA(4);
 
                         if ( (synpred1()) ) {
-                            alt44=1;
+                            alt45=1;
                         }
                         else if ( (true) ) {
-                            alt44=2;
+                            alt45=2;
                         }
                         else {
                             if (backtracking>0) {failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("813:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );", 44, 4, input);
+                                new NoViableAltException("813:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );", 45, 4, input);
 
                             throw nvae;
                         }
@@ -5610,18 +5651,18 @@
                         break;
                     case ID:
                         {
-                        int LA44_5 = input.LA(4);
+                        int LA45_5 = input.LA(4);
 
                         if ( (synpred1()) ) {
-                            alt44=1;
+                            alt45=1;
                         }
                         else if ( (true) ) {
-                            alt44=2;
+                            alt45=2;
                         }
                         else {
                             if (backtracking>0) {failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("813:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );", 44, 5, input);
+                                new NoViableAltException("813:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );", 45, 5, input);
 
                             throw nvae;
                         }
@@ -5630,45 +5671,42 @@
                     default:
                         if (backtracking>0) {failed=true; return retval;}
                         NoViableAltException nvae =
-                            new NoViableAltException("813:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );", 44, 3, input);
+                            new NoViableAltException("813:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );", 45, 3, input);
 
                         throw nvae;
                     }
 
                 }
-                else if ( (LA44_1==LEFT_PAREN) ) {
-                    alt44=2;
-                }
                 else {
                     if (backtracking>0) {failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("813:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );", 44, 1, input);
+                        new NoViableAltException("813:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );", 45, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA44_0==ID) ) {
-                alt44=2;
+            else if ( (LA45_0==ID) ) {
+                alt45=2;
             }
             else {
                 if (backtracking>0) {failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("813:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );", 44, 0, input);
+                    new NoViableAltException("813:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );", 45, 0, input);
 
                 throw nvae;
             }
-            switch (alt44) {
+            switch (alt45) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:816:5: ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN
+                    // src/main/resources/org/drools/lang/DRL.g:816:5: ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN
                     {
-                    LEFT_PAREN119=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2048); if (failed) return retval;
-                    if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN119);
+                    LEFT_PAREN120=(Token)input.LT(1);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2054); if (failed) return retval;
+                    if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN120);
 
                     if ( backtracking==0 ) {
-                      	emit(LEFT_PAREN119, DroolsEditorType.SYMBOL);	
+                      	emit(LEFT_PAREN120, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_or_key_in_lhs_or2058);
+                    pushFollow(FOLLOW_or_key_in_lhs_or2064);
                     or=or_key();
                     _fsp--;
                     if (failed) return retval;
@@ -5676,47 +5714,47 @@
                     if ( backtracking==0 ) {
                       	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     }
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:820:4: ( lhs_and )+
-                    int cnt41=0;
-                    loop41:
+                    // src/main/resources/org/drools/lang/DRL.g:820:4: ( lhs_and )+
+                    int cnt42=0;
+                    loop42:
                     do {
-                        int alt41=2;
-                        int LA41_0 = input.LA(1);
+                        int alt42=2;
+                        int LA42_0 = input.LA(1);
 
-                        if ( (LA41_0==ID||LA41_0==LEFT_PAREN) ) {
-                            alt41=1;
+                        if ( (LA42_0==ID||LA42_0==LEFT_PAREN) ) {
+                            alt42=1;
                         }
 
 
-                        switch (alt41) {
+                        switch (alt42) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:820:4: lhs_and
+                    	    // src/main/resources/org/drools/lang/DRL.g:820:4: lhs_and
                     	    {
-                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2066);
-                    	    lhs_and120=lhs_and();
+                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2072);
+                    	    lhs_and121=lhs_and();
                     	    _fsp--;
                     	    if (failed) return retval;
-                    	    if ( backtracking==0 ) stream_lhs_and.add(lhs_and120.getTree());
+                    	    if ( backtracking==0 ) stream_lhs_and.add(lhs_and121.getTree());
 
                     	    }
                     	    break;
 
                     	default :
-                    	    if ( cnt41 >= 1 ) break loop41;
+                    	    if ( cnt42 >= 1 ) break loop42;
                     	    if (backtracking>0) {failed=true; return retval;}
                                 EarlyExitException eee =
-                                    new EarlyExitException(41, input);
+                                    new EarlyExitException(42, input);
                                 throw eee;
                         }
-                        cnt41++;
+                        cnt42++;
                     } while (true);
 
-                    RIGHT_PAREN121=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2072); if (failed) return retval;
-                    if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN121);
+                    RIGHT_PAREN122=(Token)input.LT(1);
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2078); if (failed) return retval;
+                    if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN122);
 
                     if ( backtracking==0 ) {
-                      	emit(RIGHT_PAREN121, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN122, DroolsEditorType.SYMBOL);	
                     }
 
                     // AST REWRITE
@@ -5732,7 +5770,7 @@
                     root_0 = (Object)adaptor.nil();
                     // 822:3: -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN )
                     {
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:822:6: ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN )
+                        // src/main/resources/org/drools/lang/DRL.g:822:6: ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_OR_PREFIX, ((Token)or.start)), root_1);
@@ -5757,16 +5795,16 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:823:4: ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )*
+                    // src/main/resources/org/drools/lang/DRL.g:823:4: ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )*
                     {
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:823:4: ( lhs_and -> lhs_and )
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:823:5: lhs_and
+                    // src/main/resources/org/drools/lang/DRL.g:823:4: ( lhs_and -> lhs_and )
+                    // src/main/resources/org/drools/lang/DRL.g:823:5: lhs_and
                     {
-                    pushFollow(FOLLOW_lhs_and_in_lhs_or2095);
-                    lhs_and122=lhs_and();
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2101);
+                    lhs_and123=lhs_and();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_lhs_and.add(lhs_and122.getTree());
+                    if ( backtracking==0 ) stream_lhs_and.add(lhs_and123.getTree());
 
                     // AST REWRITE
                     // elements: lhs_and
@@ -5789,58 +5827,58 @@
 
                     }
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:824:3: ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )*
-                    loop43:
+                    // src/main/resources/org/drools/lang/DRL.g:824:3: ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )*
+                    loop44:
                     do {
-                        int alt43=2;
-                        int LA43_0 = input.LA(1);
+                        int alt44=2;
+                        int LA44_0 = input.LA(1);
 
-                        if ( (LA43_0==ID) ) {
-                            int LA43_2 = input.LA(2);
+                        if ( (LA44_0==ID) ) {
+                            int LA44_2 = input.LA(2);
 
                             if ( ((synpred2()&&(validateIdentifierKey(DroolsSoftKeywords.OR)))) ) {
-                                alt43=1;
+                                alt44=1;
                             }
 
 
                         }
-                        else if ( (LA43_0==DOUBLE_PIPE) ) {
-                            int LA43_3 = input.LA(2);
+                        else if ( (LA44_0==DOUBLE_PIPE) ) {
+                            int LA44_3 = input.LA(2);
 
                             if ( (synpred2()) ) {
-                                alt43=1;
+                                alt44=1;
                             }
 
 
                         }
 
 
-                        switch (alt43) {
+                        switch (alt44) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:824:5: ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and
+                    	    // src/main/resources/org/drools/lang/DRL.g:824:5: ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and
                     	    {
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:824:28: (value= or_key | pipe= DOUBLE_PIPE )
-                    	    int alt42=2;
-                    	    int LA42_0 = input.LA(1);
+                    	    // src/main/resources/org/drools/lang/DRL.g:824:28: (value= or_key | pipe= DOUBLE_PIPE )
+                    	    int alt43=2;
+                    	    int LA43_0 = input.LA(1);
 
-                    	    if ( (LA42_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.OR)))) {
-                    	        alt42=1;
+                    	    if ( (LA43_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.OR)))) {
+                    	        alt43=1;
                     	    }
-                    	    else if ( (LA42_0==DOUBLE_PIPE) ) {
-                    	        alt42=2;
+                    	    else if ( (LA43_0==DOUBLE_PIPE) ) {
+                    	        alt43=2;
                     	    }
                     	    else {
                     	        if (backtracking>0) {failed=true; return retval;}
                     	        NoViableAltException nvae =
-                    	            new NoViableAltException("824:28: (value= or_key | pipe= DOUBLE_PIPE )", 42, 0, input);
+                    	            new NoViableAltException("824:28: (value= or_key | pipe= DOUBLE_PIPE )", 43, 0, input);
 
                     	        throw nvae;
                     	    }
-                    	    switch (alt42) {
+                    	    switch (alt43) {
                     	        case 1 :
-                    	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:824:29: value= or_key
+                    	            // src/main/resources/org/drools/lang/DRL.g:824:29: value= or_key
                     	            {
-                    	            pushFollow(FOLLOW_or_key_in_lhs_or2117);
+                    	            pushFollow(FOLLOW_or_key_in_lhs_or2123);
                     	            value=or_key();
                     	            _fsp--;
                     	            if (failed) return retval;
@@ -5852,10 +5890,10 @@
                     	            }
                     	            break;
                     	        case 2 :
-                    	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:824:69: pipe= DOUBLE_PIPE
+                    	            // src/main/resources/org/drools/lang/DRL.g:824:69: pipe= DOUBLE_PIPE
                     	            {
                     	            pipe=(Token)input.LT(1);
-                    	            match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_lhs_or2124); if (failed) return retval;
+                    	            match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_lhs_or2130); if (failed) return retval;
                     	            if ( backtracking==0 ) stream_DOUBLE_PIPE.add(pipe);
 
                     	            if ( backtracking==0 ) {
@@ -5870,11 +5908,11 @@
                     	    if ( backtracking==0 ) {
                     	      	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     	    }
-                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2135);
-                    	    lhs_and123=lhs_and();
+                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2141);
+                    	    lhs_and124=lhs_and();
                     	    _fsp--;
                     	    if (failed) return retval;
-                    	    if ( backtracking==0 ) stream_lhs_and.add(lhs_and123.getTree());
+                    	    if ( backtracking==0 ) stream_lhs_and.add(lhs_and124.getTree());
 
                     	    // AST REWRITE
                     	    // elements: lhs_or, lhs_and
@@ -5889,7 +5927,7 @@
                     	    root_0 = (Object)adaptor.nil();
                     	    // 827:3: -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and )
                     	    {
-                    	        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:827:6: ^( VT_OR_INFIX[orToken] $lhs_or lhs_and )
+                    	        // src/main/resources/org/drools/lang/DRL.g:827:6: ^( VT_OR_INFIX[orToken] $lhs_or lhs_and )
                     	        {
                     	        Object root_1 = (Object)adaptor.nil();
                     	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_OR_INFIX, orToken), root_1);
@@ -5908,7 +5946,7 @@
                     	    break;
 
                     	default :
-                    	    break loop43;
+                    	    break loop44;
                         }
                     } while (true);
 
@@ -5940,7 +5978,7 @@
     };
 
     // $ANTLR start lhs_and
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:830:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );
+    // src/main/resources/org/drools/lang/DRL.g:830:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );
     public final lhs_and_return lhs_and() throws RecognitionException {
         lhs_and_return retval = new lhs_and_return();
         retval.start = input.LT(1);
@@ -5948,48 +5986,45 @@
         Object root_0 = null;
 
         Token amper=null;
-        Token LEFT_PAREN124=null;
-        Token RIGHT_PAREN126=null;
+        Token LEFT_PAREN125=null;
+        Token RIGHT_PAREN127=null;
         and_key_return and = null;
 
         and_key_return value = null;
 
-        lhs_unary_return lhs_unary125 = null;
+        lhs_unary_return lhs_unary126 = null;
 
-        lhs_unary_return lhs_unary127 = null;
-
         lhs_unary_return lhs_unary128 = null;
 
+        lhs_unary_return lhs_unary129 = null;
 
+
         Object amper_tree=null;
-        Object LEFT_PAREN124_tree=null;
-        Object RIGHT_PAREN126_tree=null;
-        RewriteRuleTokenStream stream_DOUBLE_AMPER=new RewriteRuleTokenStream(adaptor,"token DOUBLE_AMPER");
+        Object LEFT_PAREN125_tree=null;
+        Object RIGHT_PAREN127_tree=null;
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
+        RewriteRuleTokenStream stream_DOUBLE_AMPER=new RewriteRuleTokenStream(adaptor,"token DOUBLE_AMPER");
+        RewriteRuleSubtreeStream stream_lhs_unary=new RewriteRuleSubtreeStream(adaptor,"rule lhs_unary");
         RewriteRuleSubtreeStream stream_and_key=new RewriteRuleSubtreeStream(adaptor,"rule and_key");
-        RewriteRuleSubtreeStream stream_lhs_unary=new RewriteRuleSubtreeStream(adaptor,"rule lhs_unary");
 
         	Token andToken = null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:833:3: ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* )
-            int alt48=2;
-            int LA48_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:833:3: ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* )
+            int alt49=2;
+            int LA49_0 = input.LA(1);
 
-            if ( (LA48_0==LEFT_PAREN) ) {
-                int LA48_1 = input.LA(2);
+            if ( (LA49_0==LEFT_PAREN) ) {
+                int LA49_1 = input.LA(2);
 
-                if ( (LA48_1==LEFT_PAREN) ) {
-                    alt48=2;
-                }
-                else if ( (LA48_1==ID) ) {
+                if ( (LA49_1==ID) ) {
                     switch ( input.LA(3) ) {
                     case DOT:
                     case COLON:
                     case LEFT_SQUARE:
                         {
-                        alt48=2;
+                        alt49=2;
                         }
                         break;
                     case LEFT_PAREN:
@@ -5997,18 +6032,18 @@
                         switch ( input.LA(4) ) {
                         case LEFT_PAREN:
                             {
-                            int LA48_6 = input.LA(5);
+                            int LA49_6 = input.LA(5);
 
                             if ( (synpred3()) ) {
-                                alt48=1;
+                                alt49=1;
                             }
                             else if ( (true) ) {
-                                alt48=2;
+                                alt49=2;
                             }
                             else {
                                 if (backtracking>0) {failed=true; return retval;}
                                 NoViableAltException nvae =
-                                    new NoViableAltException("830:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );", 48, 6, input);
+                                    new NoViableAltException("830:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );", 49, 6, input);
 
                                 throw nvae;
                             }
@@ -6016,18 +6051,18 @@
                             break;
                         case ID:
                             {
-                            int LA48_7 = input.LA(5);
+                            int LA49_7 = input.LA(5);
 
                             if ( (synpred3()) ) {
-                                alt48=1;
+                                alt49=1;
                             }
                             else if ( (true) ) {
-                                alt48=2;
+                                alt49=2;
                             }
                             else {
                                 if (backtracking>0) {failed=true; return retval;}
                                 NoViableAltException nvae =
-                                    new NoViableAltException("830:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );", 48, 7, input);
+                                    new NoViableAltException("830:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );", 49, 7, input);
 
                                 throw nvae;
                             }
@@ -6157,13 +6192,13 @@
                         case C_STYLE_SINGLE_LINE_COMMENT:
                         case MULTI_LINE_COMMENT:
                             {
-                            alt48=2;
+                            alt49=2;
                             }
                             break;
                         default:
                             if (backtracking>0) {failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("830:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );", 48, 4, input);
+                                new NoViableAltException("830:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );", 49, 4, input);
 
                             throw nvae;
                         }
@@ -6172,18 +6207,18 @@
                         break;
                     case ID:
                         {
-                        int LA48_5 = input.LA(4);
+                        int LA49_5 = input.LA(4);
 
                         if ( (synpred3()) ) {
-                            alt48=1;
+                            alt49=1;
                         }
                         else if ( (true) ) {
-                            alt48=2;
+                            alt49=2;
                         }
                         else {
                             if (backtracking>0) {failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("830:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );", 48, 5, input);
+                                new NoViableAltException("830:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );", 49, 5, input);
 
                             throw nvae;
                         }
@@ -6192,42 +6227,45 @@
                     default:
                         if (backtracking>0) {failed=true; return retval;}
                         NoViableAltException nvae =
-                            new NoViableAltException("830:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );", 48, 3, input);
+                            new NoViableAltException("830:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );", 49, 3, input);
 
                         throw nvae;
                     }
 
                 }
+                else if ( (LA49_1==LEFT_PAREN) ) {
+                    alt49=2;
+                }
                 else {
                     if (backtracking>0) {failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("830:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );", 48, 1, input);
+                        new NoViableAltException("830:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );", 49, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA48_0==ID) ) {
-                alt48=2;
+            else if ( (LA49_0==ID) ) {
+                alt49=2;
             }
             else {
                 if (backtracking>0) {failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("830:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );", 48, 0, input);
+                    new NoViableAltException("830:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );", 49, 0, input);
 
                 throw nvae;
             }
-            switch (alt48) {
+            switch (alt49) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:833:5: ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN
+                    // src/main/resources/org/drools/lang/DRL.g:833:5: ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN
                     {
-                    LEFT_PAREN124=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_and2176); if (failed) return retval;
-                    if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN124);
+                    LEFT_PAREN125=(Token)input.LT(1);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_and2182); if (failed) return retval;
+                    if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN125);
 
                     if ( backtracking==0 ) {
-                      	emit(LEFT_PAREN124, DroolsEditorType.SYMBOL);	
+                      	emit(LEFT_PAREN125, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_and_key_in_lhs_and2186);
+                    pushFollow(FOLLOW_and_key_in_lhs_and2192);
                     and=and_key();
                     _fsp--;
                     if (failed) return retval;
@@ -6235,51 +6273,51 @@
                     if ( backtracking==0 ) {
                       	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     }
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:837:4: ( lhs_unary )+
-                    int cnt45=0;
-                    loop45:
+                    // src/main/resources/org/drools/lang/DRL.g:837:4: ( lhs_unary )+
+                    int cnt46=0;
+                    loop46:
                     do {
-                        int alt45=2;
-                        int LA45_0 = input.LA(1);
+                        int alt46=2;
+                        int LA46_0 = input.LA(1);
 
-                        if ( (LA45_0==ID||LA45_0==LEFT_PAREN) ) {
-                            alt45=1;
+                        if ( (LA46_0==ID||LA46_0==LEFT_PAREN) ) {
+                            alt46=1;
                         }
 
 
-                        switch (alt45) {
+                        switch (alt46) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:837:4: lhs_unary
+                    	    // src/main/resources/org/drools/lang/DRL.g:837:4: lhs_unary
                     	    {
-                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2194);
-                    	    lhs_unary125=lhs_unary();
+                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2200);
+                    	    lhs_unary126=lhs_unary();
                     	    _fsp--;
                     	    if (failed) return retval;
-                    	    if ( backtracking==0 ) stream_lhs_unary.add(lhs_unary125.getTree());
+                    	    if ( backtracking==0 ) stream_lhs_unary.add(lhs_unary126.getTree());
 
                     	    }
                     	    break;
 
                     	default :
-                    	    if ( cnt45 >= 1 ) break loop45;
+                    	    if ( cnt46 >= 1 ) break loop46;
                     	    if (backtracking>0) {failed=true; return retval;}
                                 EarlyExitException eee =
-                                    new EarlyExitException(45, input);
+                                    new EarlyExitException(46, input);
                                 throw eee;
                         }
-                        cnt45++;
+                        cnt46++;
                     } while (true);
 
-                    RIGHT_PAREN126=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_and2200); if (failed) return retval;
-                    if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN126);
+                    RIGHT_PAREN127=(Token)input.LT(1);
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_and2206); if (failed) return retval;
+                    if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN127);
 
                     if ( backtracking==0 ) {
-                      	emit(RIGHT_PAREN126, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN127, DroolsEditorType.SYMBOL);	
                     }
 
                     // AST REWRITE
-                    // elements: RIGHT_PAREN, lhs_unary
+                    // elements: lhs_unary, RIGHT_PAREN
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -6291,7 +6329,7 @@
                     root_0 = (Object)adaptor.nil();
                     // 839:3: -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN )
                     {
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:839:6: ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN )
+                        // src/main/resources/org/drools/lang/DRL.g:839:6: ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_AND_PREFIX, ((Token)and.start)), root_1);
@@ -6316,16 +6354,16 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:840:4: ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )*
+                    // src/main/resources/org/drools/lang/DRL.g:840:4: ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )*
                     {
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:840:4: ( lhs_unary -> lhs_unary )
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:840:5: lhs_unary
+                    // src/main/resources/org/drools/lang/DRL.g:840:4: ( lhs_unary -> lhs_unary )
+                    // src/main/resources/org/drools/lang/DRL.g:840:5: lhs_unary
                     {
-                    pushFollow(FOLLOW_lhs_unary_in_lhs_and2224);
-                    lhs_unary127=lhs_unary();
+                    pushFollow(FOLLOW_lhs_unary_in_lhs_and2230);
+                    lhs_unary128=lhs_unary();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_lhs_unary.add(lhs_unary127.getTree());
+                    if ( backtracking==0 ) stream_lhs_unary.add(lhs_unary128.getTree());
 
                     // AST REWRITE
                     // elements: lhs_unary
@@ -6348,58 +6386,58 @@
 
                     }
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:3: ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )*
-                    loop47:
+                    // src/main/resources/org/drools/lang/DRL.g:841:3: ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )*
+                    loop48:
                     do {
-                        int alt47=2;
-                        int LA47_0 = input.LA(1);
+                        int alt48=2;
+                        int LA48_0 = input.LA(1);
 
-                        if ( (LA47_0==ID) ) {
-                            int LA47_2 = input.LA(2);
+                        if ( (LA48_0==ID) ) {
+                            int LA48_2 = input.LA(2);
 
                             if ( ((synpred4()&&(validateIdentifierKey(DroolsSoftKeywords.AND)))) ) {
-                                alt47=1;
+                                alt48=1;
                             }
 
 
                         }
-                        else if ( (LA47_0==DOUBLE_AMPER) ) {
-                            int LA47_3 = input.LA(2);
+                        else if ( (LA48_0==DOUBLE_AMPER) ) {
+                            int LA48_3 = input.LA(2);
 
                             if ( (synpred4()) ) {
-                                alt47=1;
+                                alt48=1;
                             }
 
 
                         }
 
 
-                        switch (alt47) {
+                        switch (alt48) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:5: ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary
+                    	    // src/main/resources/org/drools/lang/DRL.g:841:5: ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary
                     	    {
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:30: (value= and_key | amper= DOUBLE_AMPER )
-                    	    int alt46=2;
-                    	    int LA46_0 = input.LA(1);
+                    	    // src/main/resources/org/drools/lang/DRL.g:841:30: (value= and_key | amper= DOUBLE_AMPER )
+                    	    int alt47=2;
+                    	    int LA47_0 = input.LA(1);
 
-                    	    if ( (LA46_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.AND)))) {
-                    	        alt46=1;
+                    	    if ( (LA47_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.AND)))) {
+                    	        alt47=1;
                     	    }
-                    	    else if ( (LA46_0==DOUBLE_AMPER) ) {
-                    	        alt46=2;
+                    	    else if ( (LA47_0==DOUBLE_AMPER) ) {
+                    	        alt47=2;
                     	    }
                     	    else {
                     	        if (backtracking>0) {failed=true; return retval;}
                     	        NoViableAltException nvae =
-                    	            new NoViableAltException("841:30: (value= and_key | amper= DOUBLE_AMPER )", 46, 0, input);
+                    	            new NoViableAltException("841:30: (value= and_key | amper= DOUBLE_AMPER )", 47, 0, input);
 
                     	        throw nvae;
                     	    }
-                    	    switch (alt46) {
+                    	    switch (alt47) {
                     	        case 1 :
-                    	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:31: value= and_key
+                    	            // src/main/resources/org/drools/lang/DRL.g:841:31: value= and_key
                     	            {
-                    	            pushFollow(FOLLOW_and_key_in_lhs_and2246);
+                    	            pushFollow(FOLLOW_and_key_in_lhs_and2252);
                     	            value=and_key();
                     	            _fsp--;
                     	            if (failed) return retval;
@@ -6411,10 +6449,10 @@
                     	            }
                     	            break;
                     	        case 2 :
-                    	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:73: amper= DOUBLE_AMPER
+                    	            // src/main/resources/org/drools/lang/DRL.g:841:73: amper= DOUBLE_AMPER
                     	            {
                     	            amper=(Token)input.LT(1);
-                    	            match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_lhs_and2253); if (failed) return retval;
+                    	            match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_lhs_and2259); if (failed) return retval;
                     	            if ( backtracking==0 ) stream_DOUBLE_AMPER.add(amper);
 
                     	            if ( backtracking==0 ) {
@@ -6429,14 +6467,14 @@
                     	    if ( backtracking==0 ) {
                     	      	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     	    }
-                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2264);
-                    	    lhs_unary128=lhs_unary();
+                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2270);
+                    	    lhs_unary129=lhs_unary();
                     	    _fsp--;
                     	    if (failed) return retval;
-                    	    if ( backtracking==0 ) stream_lhs_unary.add(lhs_unary128.getTree());
+                    	    if ( backtracking==0 ) stream_lhs_unary.add(lhs_unary129.getTree());
 
                     	    // AST REWRITE
-                    	    // elements: lhs_unary, lhs_and
+                    	    // elements: lhs_and, lhs_unary
                     	    // token labels: 
                     	    // rule labels: retval
                     	    // token list labels: 
@@ -6448,7 +6486,7 @@
                     	    root_0 = (Object)adaptor.nil();
                     	    // 844:3: -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary )
                     	    {
-                    	        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:844:6: ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary )
+                    	        // src/main/resources/org/drools/lang/DRL.g:844:6: ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary )
                     	        {
                     	        Object root_1 = (Object)adaptor.nil();
                     	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_AND_INFIX, andToken), root_1);
@@ -6467,7 +6505,7 @@
                     	    break;
 
                     	default :
-                    	    break loop47;
+                    	    break loop48;
                         }
                     } while (true);
 
@@ -6499,202 +6537,202 @@
     };
 
     // $ANTLR start lhs_unary
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:847:1: lhs_unary : ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? ;
+    // src/main/resources/org/drools/lang/DRL.g:847:1: lhs_unary : ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? ;
     public final lhs_unary_return lhs_unary() throws RecognitionException {
         lhs_unary_return retval = new lhs_unary_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN134=null;
-        Token RIGHT_PAREN136=null;
-        Token SEMICOLON138=null;
-        lhs_exist_return lhs_exist129 = null;
+        Token LEFT_PAREN135=null;
+        Token RIGHT_PAREN137=null;
+        Token SEMICOLON139=null;
+        lhs_exist_return lhs_exist130 = null;
 
-        lhs_not_binding_return lhs_not_binding130 = null;
+        lhs_not_binding_return lhs_not_binding131 = null;
 
-        lhs_not_return lhs_not131 = null;
+        lhs_not_return lhs_not132 = null;
 
-        lhs_eval_return lhs_eval132 = null;
+        lhs_eval_return lhs_eval133 = null;
 
-        lhs_forall_return lhs_forall133 = null;
+        lhs_forall_return lhs_forall134 = null;
 
-        lhs_or_return lhs_or135 = null;
+        lhs_or_return lhs_or136 = null;
 
-        pattern_source_return pattern_source137 = null;
+        pattern_source_return pattern_source138 = null;
 
 
-        Object LEFT_PAREN134_tree=null;
-        Object RIGHT_PAREN136_tree=null;
-        Object SEMICOLON138_tree=null;
+        Object LEFT_PAREN135_tree=null;
+        Object RIGHT_PAREN137_tree=null;
+        Object SEMICOLON139_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:848:2: ( ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:848:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:848:2: ( ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? )
+            // src/main/resources/org/drools/lang/DRL.g:848:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )?
             {
             root_0 = (Object)adaptor.nil();
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:848:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )
-            int alt49=7;
-            int LA49_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:848:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )
+            int alt50=7;
+            int LA50_0 = input.LA(1);
 
-            if ( (LA49_0==ID) ) {
-                int LA49_1 = input.LA(2);
+            if ( (LA50_0==ID) ) {
+                int LA50_1 = input.LA(2);
 
                 if ( ((validateIdentifierKey(DroolsSoftKeywords.EXISTS))) ) {
-                    alt49=1;
+                    alt50=1;
                 }
                 else if ( ((validateNotWithBinding()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {
-                    alt49=2;
+                    alt50=2;
                 }
                 else if ( ((validateIdentifierKey(DroolsSoftKeywords.NOT))) ) {
-                    alt49=3;
+                    alt50=3;
                 }
                 else if ( ((validateIdentifierKey(DroolsSoftKeywords.EVAL))) ) {
-                    alt49=4;
+                    alt50=4;
                 }
                 else if ( ((validateIdentifierKey(DroolsSoftKeywords.FORALL))) ) {
-                    alt49=5;
+                    alt50=5;
                 }
                 else if ( (true) ) {
-                    alt49=7;
+                    alt50=7;
                 }
                 else {
                     if (backtracking>0) {failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("848:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )", 49, 1, input);
+                        new NoViableAltException("848:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )", 50, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA49_0==LEFT_PAREN) ) {
-                alt49=6;
+            else if ( (LA50_0==LEFT_PAREN) ) {
+                alt50=6;
             }
             else {
                 if (backtracking>0) {failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("848:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )", 49, 0, input);
+                    new NoViableAltException("848:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )", 50, 0, input);
 
                 throw nvae;
             }
-            switch (alt49) {
+            switch (alt50) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:848:6: lhs_exist
+                    // src/main/resources/org/drools/lang/DRL.g:848:6: lhs_exist
                     {
-                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary2295);
-                    lhs_exist129=lhs_exist();
+                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary2301);
+                    lhs_exist130=lhs_exist();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, lhs_exist129.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, lhs_exist130.getTree());
 
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:849:4: {...}? => lhs_not_binding
+                    // src/main/resources/org/drools/lang/DRL.g:849:4: {...}? => lhs_not_binding
                     {
                     if ( !(validateNotWithBinding()) ) {
                         if (backtracking>0) {failed=true; return retval;}
                         throw new FailedPredicateException(input, "lhs_unary", "validateNotWithBinding()");
                     }
-                    pushFollow(FOLLOW_lhs_not_binding_in_lhs_unary2303);
-                    lhs_not_binding130=lhs_not_binding();
+                    pushFollow(FOLLOW_lhs_not_binding_in_lhs_unary2309);
+                    lhs_not_binding131=lhs_not_binding();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, lhs_not_binding130.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, lhs_not_binding131.getTree());
 
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:850:5: lhs_not
+                    // src/main/resources/org/drools/lang/DRL.g:850:5: lhs_not
                     {
-                    pushFollow(FOLLOW_lhs_not_in_lhs_unary2309);
-                    lhs_not131=lhs_not();
+                    pushFollow(FOLLOW_lhs_not_in_lhs_unary2315);
+                    lhs_not132=lhs_not();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, lhs_not131.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, lhs_not132.getTree());
 
                     }
                     break;
                 case 4 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:851:5: lhs_eval
+                    // src/main/resources/org/drools/lang/DRL.g:851:5: lhs_eval
                     {
-                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary2315);
-                    lhs_eval132=lhs_eval();
+                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary2321);
+                    lhs_eval133=lhs_eval();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, lhs_eval132.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, lhs_eval133.getTree());
 
                     }
                     break;
                 case 5 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:852:5: lhs_forall
+                    // src/main/resources/org/drools/lang/DRL.g:852:5: lhs_forall
                     {
-                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary2321);
-                    lhs_forall133=lhs_forall();
+                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary2327);
+                    lhs_forall134=lhs_forall();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, lhs_forall133.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, lhs_forall134.getTree());
 
                     }
                     break;
                 case 6 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:853:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // src/main/resources/org/drools/lang/DRL.g:853:5: LEFT_PAREN lhs_or RIGHT_PAREN
                     {
-                    LEFT_PAREN134=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary2327); if (failed) return retval;
+                    LEFT_PAREN135=(Token)input.LT(1);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary2333); if (failed) return retval;
                     if ( backtracking==0 ) {
-                      	emit(LEFT_PAREN134, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
+                      	emit(LEFT_PAREN135, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_unary2338);
-                    lhs_or135=lhs_or();
+                    pushFollow(FOLLOW_lhs_or_in_lhs_unary2344);
+                    lhs_or136=lhs_or();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, lhs_or135.getTree());
-                    RIGHT_PAREN136=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary2344); if (failed) return retval;
+                    if ( backtracking==0 ) adaptor.addChild(root_0, lhs_or136.getTree());
+                    RIGHT_PAREN137=(Token)input.LT(1);
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary2350); if (failed) return retval;
                     if ( backtracking==0 ) {
-                    RIGHT_PAREN136_tree = (Object)adaptor.create(RIGHT_PAREN136);
-                    adaptor.addChild(root_0, RIGHT_PAREN136_tree);
+                    RIGHT_PAREN137_tree = (Object)adaptor.create(RIGHT_PAREN137);
+                    adaptor.addChild(root_0, RIGHT_PAREN137_tree);
                     }
                     if ( backtracking==0 ) {
-                      	emit(RIGHT_PAREN136, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN137, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 7 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:856:5: pattern_source
+                    // src/main/resources/org/drools/lang/DRL.g:856:5: pattern_source
                     {
-                    pushFollow(FOLLOW_pattern_source_in_lhs_unary2352);
-                    pattern_source137=pattern_source();
+                    pushFollow(FOLLOW_pattern_source_in_lhs_unary2358);
+                    pattern_source138=pattern_source();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, pattern_source137.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, pattern_source138.getTree());
 
                     }
                     break;
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:858:3: ( ( SEMICOLON )=> SEMICOLON )?
-            int alt50=2;
-            int LA50_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:858:3: ( ( SEMICOLON )=> SEMICOLON )?
+            int alt51=2;
+            int LA51_0 = input.LA(1);
 
-            if ( (LA50_0==SEMICOLON) ) {
-                int LA50_1 = input.LA(2);
+            if ( (LA51_0==SEMICOLON) ) {
+                int LA51_1 = input.LA(2);
 
                 if ( (synpred5()) ) {
-                    alt50=1;
+                    alt51=1;
                 }
             }
-            switch (alt50) {
+            switch (alt51) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:858:4: ( SEMICOLON )=> SEMICOLON
+                    // src/main/resources/org/drools/lang/DRL.g:858:4: ( SEMICOLON )=> SEMICOLON
                     {
-                    SEMICOLON138=(Token)input.LT(1);
-                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_lhs_unary2366); if (failed) return retval;
+                    SEMICOLON139=(Token)input.LT(1);
+                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_lhs_unary2372); if (failed) return retval;
                     if ( backtracking==0 ) {
-                      	emit(SEMICOLON138, DroolsEditorType.SYMBOL);	
+                      	emit(SEMICOLON139, DroolsEditorType.SYMBOL);	
                     }
 
                     }
@@ -6728,91 +6766,91 @@
     };
 
     // $ANTLR start lhs_exist
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:861:1: lhs_exist : exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) ;
+    // src/main/resources/org/drools/lang/DRL.g:861:1: lhs_exist : exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) ;
     public final lhs_exist_return lhs_exist() throws RecognitionException {
         lhs_exist_return retval = new lhs_exist_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN141=null;
-        Token RIGHT_PAREN143=null;
-        exists_key_return exists_key139 = null;
+        Token LEFT_PAREN142=null;
+        Token RIGHT_PAREN144=null;
+        exists_key_return exists_key140 = null;
 
-        lhs_or_return lhs_or140 = null;
+        lhs_or_return lhs_or141 = null;
 
-        lhs_or_return lhs_or142 = null;
+        lhs_or_return lhs_or143 = null;
 
-        lhs_pattern_return lhs_pattern144 = null;
+        lhs_pattern_return lhs_pattern145 = null;
 
 
-        Object LEFT_PAREN141_tree=null;
-        Object RIGHT_PAREN143_tree=null;
+        Object LEFT_PAREN142_tree=null;
+        Object RIGHT_PAREN144_tree=null;
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
+        RewriteRuleSubtreeStream stream_lhs_pattern=new RewriteRuleSubtreeStream(adaptor,"rule lhs_pattern");
         RewriteRuleSubtreeStream stream_lhs_or=new RewriteRuleSubtreeStream(adaptor,"rule lhs_or");
         RewriteRuleSubtreeStream stream_exists_key=new RewriteRuleSubtreeStream(adaptor,"rule exists_key");
-        RewriteRuleSubtreeStream stream_lhs_pattern=new RewriteRuleSubtreeStream(adaptor,"rule lhs_pattern");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:862:2: ( exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:862:4: exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // src/main/resources/org/drools/lang/DRL.g:862:2: ( exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) )
+            // src/main/resources/org/drools/lang/DRL.g:862:4: exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
             {
-            pushFollow(FOLLOW_exists_key_in_lhs_exist2382);
-            exists_key139=exists_key();
+            pushFollow(FOLLOW_exists_key_in_lhs_exist2388);
+            exists_key140=exists_key();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) stream_exists_key.add(exists_key139.getTree());
+            if ( backtracking==0 ) stream_exists_key.add(exists_key140.getTree());
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_EXISTS);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:864:10: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
-            int alt51=3;
-            alt51 = dfa51.predict(input);
-            switch (alt51) {
+            // src/main/resources/org/drools/lang/DRL.g:864:10: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            int alt52=3;
+            alt52 = dfa52.predict(input);
+            switch (alt52) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:864:12: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
+                    // src/main/resources/org/drools/lang/DRL.g:864:12: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
                     {
-                    pushFollow(FOLLOW_lhs_or_in_lhs_exist2409);
-                    lhs_or140=lhs_or();
+                    pushFollow(FOLLOW_lhs_or_in_lhs_exist2415);
+                    lhs_or141=lhs_or();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_lhs_or.add(lhs_or140.getTree());
+                    if ( backtracking==0 ) stream_lhs_or.add(lhs_or141.getTree());
 
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:865:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // src/main/resources/org/drools/lang/DRL.g:865:5: LEFT_PAREN lhs_or RIGHT_PAREN
                     {
-                    LEFT_PAREN141=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist2416); if (failed) return retval;
-                    if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN141);
+                    LEFT_PAREN142=(Token)input.LT(1);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist2422); if (failed) return retval;
+                    if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN142);
 
                     if ( backtracking==0 ) {
-                      	emit(LEFT_PAREN141, DroolsEditorType.SYMBOL);	
+                      	emit(LEFT_PAREN142, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_exist2424);
-                    lhs_or142=lhs_or();
+                    pushFollow(FOLLOW_lhs_or_in_lhs_exist2430);
+                    lhs_or143=lhs_or();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_lhs_or.add(lhs_or142.getTree());
-                    RIGHT_PAREN143=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist2431); if (failed) return retval;
-                    if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN143);
+                    if ( backtracking==0 ) stream_lhs_or.add(lhs_or143.getTree());
+                    RIGHT_PAREN144=(Token)input.LT(1);
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist2437); if (failed) return retval;
+                    if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN144);
 
                     if ( backtracking==0 ) {
-                      	emit(RIGHT_PAREN143, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN144, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:868:12: lhs_pattern
+                    // src/main/resources/org/drools/lang/DRL.g:868:12: lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_exist2446);
-                    lhs_pattern144=lhs_pattern();
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_exist2452);
+                    lhs_pattern145=lhs_pattern();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_lhs_pattern.add(lhs_pattern144.getTree());
+                    if ( backtracking==0 ) stream_lhs_pattern.add(lhs_pattern145.getTree());
 
                     }
                     break;
@@ -6821,7 +6859,7 @@
 
 
             // AST REWRITE
-            // elements: lhs_pattern, exists_key, lhs_or, RIGHT_PAREN
+            // elements: lhs_pattern, lhs_or, RIGHT_PAREN, exists_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -6833,24 +6871,24 @@
             root_0 = (Object)adaptor.nil();
             // 870:10: -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:870:13: ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+                // src/main/resources/org/drools/lang/DRL.g:870:13: ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_exists_key.nextNode(), root_1);
 
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:870:26: ( lhs_or )?
+                // src/main/resources/org/drools/lang/DRL.g:870:26: ( lhs_or )?
                 if ( stream_lhs_or.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_or.next());
 
                 }
                 stream_lhs_or.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:870:34: ( lhs_pattern )?
+                // src/main/resources/org/drools/lang/DRL.g:870:34: ( lhs_pattern )?
                 if ( stream_lhs_pattern.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_pattern.next());
 
                 }
                 stream_lhs_pattern.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:870:47: ( RIGHT_PAREN )?
+                // src/main/resources/org/drools/lang/DRL.g:870:47: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
                     adaptor.addChild(root_1, stream_RIGHT_PAREN.next());
 
@@ -6889,37 +6927,37 @@
     };
 
     // $ANTLR start lhs_not_binding
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:873:1: lhs_not_binding : not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) ;
+    // src/main/resources/org/drools/lang/DRL.g:873:1: lhs_not_binding : not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) ;
     public final lhs_not_binding_return lhs_not_binding() throws RecognitionException {
         lhs_not_binding_return retval = new lhs_not_binding_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        not_key_return not_key145 = null;
+        not_key_return not_key146 = null;
 
-        fact_binding_return fact_binding146 = null;
+        fact_binding_return fact_binding147 = null;
 
 
         RewriteRuleSubtreeStream stream_fact_binding=new RewriteRuleSubtreeStream(adaptor,"rule fact_binding");
         RewriteRuleSubtreeStream stream_not_key=new RewriteRuleSubtreeStream(adaptor,"rule not_key");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:2: ( not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:4: not_key fact_binding
+            // src/main/resources/org/drools/lang/DRL.g:874:2: ( not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) )
+            // src/main/resources/org/drools/lang/DRL.g:874:4: not_key fact_binding
             {
-            pushFollow(FOLLOW_not_key_in_lhs_not_binding2492);
-            not_key145=not_key();
+            pushFollow(FOLLOW_not_key_in_lhs_not_binding2498);
+            not_key146=not_key();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) stream_not_key.add(not_key145.getTree());
-            pushFollow(FOLLOW_fact_binding_in_lhs_not_binding2494);
-            fact_binding146=fact_binding();
+            if ( backtracking==0 ) stream_not_key.add(not_key146.getTree());
+            pushFollow(FOLLOW_fact_binding_in_lhs_not_binding2500);
+            fact_binding147=fact_binding();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) stream_fact_binding.add(fact_binding146.getTree());
+            if ( backtracking==0 ) stream_fact_binding.add(fact_binding147.getTree());
 
             // AST REWRITE
-            // elements: not_key, fact_binding
+            // elements: fact_binding, not_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -6931,12 +6969,12 @@
             root_0 = (Object)adaptor.nil();
             // 875:2: -> ^( not_key ^( VT_PATTERN fact_binding ) )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:875:5: ^( not_key ^( VT_PATTERN fact_binding ) )
+                // src/main/resources/org/drools/lang/DRL.g:875:5: ^( not_key ^( VT_PATTERN fact_binding ) )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_not_key.nextNode(), root_1);
 
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:875:15: ^( VT_PATTERN fact_binding )
+                // src/main/resources/org/drools/lang/DRL.g:875:15: ^( VT_PATTERN fact_binding )
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_PATTERN, "VT_PATTERN"), root_2);
@@ -6978,94 +7016,94 @@
     };
 
     // $ANTLR start lhs_not
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:878:1: lhs_not : not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) ;
+    // src/main/resources/org/drools/lang/DRL.g:878:1: lhs_not : not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) ;
     public final lhs_not_return lhs_not() throws RecognitionException {
         lhs_not_return retval = new lhs_not_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN149=null;
-        Token RIGHT_PAREN151=null;
-        not_key_return not_key147 = null;
+        Token LEFT_PAREN150=null;
+        Token RIGHT_PAREN152=null;
+        not_key_return not_key148 = null;
 
-        lhs_or_return lhs_or148 = null;
+        lhs_or_return lhs_or149 = null;
 
-        lhs_or_return lhs_or150 = null;
+        lhs_or_return lhs_or151 = null;
 
-        lhs_pattern_return lhs_pattern152 = null;
+        lhs_pattern_return lhs_pattern153 = null;
 
 
-        Object LEFT_PAREN149_tree=null;
-        Object RIGHT_PAREN151_tree=null;
+        Object LEFT_PAREN150_tree=null;
+        Object RIGHT_PAREN152_tree=null;
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
-        RewriteRuleSubtreeStream stream_lhs_or=new RewriteRuleSubtreeStream(adaptor,"rule lhs_or");
         RewriteRuleSubtreeStream stream_not_key=new RewriteRuleSubtreeStream(adaptor,"rule not_key");
         RewriteRuleSubtreeStream stream_lhs_pattern=new RewriteRuleSubtreeStream(adaptor,"rule lhs_pattern");
+        RewriteRuleSubtreeStream stream_lhs_or=new RewriteRuleSubtreeStream(adaptor,"rule lhs_or");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:878:9: ( not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:878:11: not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // src/main/resources/org/drools/lang/DRL.g:878:9: ( not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) )
+            // src/main/resources/org/drools/lang/DRL.g:878:11: not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
             {
-            pushFollow(FOLLOW_not_key_in_lhs_not2517);
-            not_key147=not_key();
+            pushFollow(FOLLOW_not_key_in_lhs_not2523);
+            not_key148=not_key();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) stream_not_key.add(not_key147.getTree());
+            if ( backtracking==0 ) stream_not_key.add(not_key148.getTree());
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_NOT);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:880:3: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
-            int alt52=3;
-            alt52 = dfa52.predict(input);
-            switch (alt52) {
+            // src/main/resources/org/drools/lang/DRL.g:880:3: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            int alt53=3;
+            alt53 = dfa53.predict(input);
+            switch (alt53) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:880:5: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
+                    // src/main/resources/org/drools/lang/DRL.g:880:5: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
                     {
                     if ( backtracking==0 ) {
                       	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_not2539);
-                    lhs_or148=lhs_or();
+                    pushFollow(FOLLOW_lhs_or_in_lhs_not2545);
+                    lhs_or149=lhs_or();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_lhs_or.add(lhs_or148.getTree());
+                    if ( backtracking==0 ) stream_lhs_or.add(lhs_or149.getTree());
 
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:881:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // src/main/resources/org/drools/lang/DRL.g:881:5: LEFT_PAREN lhs_or RIGHT_PAREN
                     {
-                    LEFT_PAREN149=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not2546); if (failed) return retval;
-                    if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN149);
+                    LEFT_PAREN150=(Token)input.LT(1);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not2552); if (failed) return retval;
+                    if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN150);
 
                     if ( backtracking==0 ) {
-                      	emit(LEFT_PAREN149, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
+                      	emit(LEFT_PAREN150, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_not2555);
-                    lhs_or150=lhs_or();
+                    pushFollow(FOLLOW_lhs_or_in_lhs_not2561);
+                    lhs_or151=lhs_or();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_lhs_or.add(lhs_or150.getTree());
-                    RIGHT_PAREN151=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not2561); if (failed) return retval;
-                    if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN151);
+                    if ( backtracking==0 ) stream_lhs_or.add(lhs_or151.getTree());
+                    RIGHT_PAREN152=(Token)input.LT(1);
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not2567); if (failed) return retval;
+                    if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN152);
 
                     if ( backtracking==0 ) {
-                      	emit(RIGHT_PAREN151, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN152, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:884:6: lhs_pattern
+                    // src/main/resources/org/drools/lang/DRL.g:884:6: lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_not2571);
-                    lhs_pattern152=lhs_pattern();
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_not2577);
+                    lhs_pattern153=lhs_pattern();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_lhs_pattern.add(lhs_pattern152.getTree());
+                    if ( backtracking==0 ) stream_lhs_pattern.add(lhs_pattern153.getTree());
 
                     }
                     break;
@@ -7074,7 +7112,7 @@
 
 
             // AST REWRITE
-            // elements: lhs_pattern, lhs_or, not_key, RIGHT_PAREN
+            // elements: not_key, lhs_or, RIGHT_PAREN, lhs_pattern
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -7086,24 +7124,24 @@
             root_0 = (Object)adaptor.nil();
             // 885:10: -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:885:13: ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+                // src/main/resources/org/drools/lang/DRL.g:885:13: ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_not_key.nextNode(), root_1);
 
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:885:23: ( lhs_or )?
+                // src/main/resources/org/drools/lang/DRL.g:885:23: ( lhs_or )?
                 if ( stream_lhs_or.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_or.next());
 
                 }
                 stream_lhs_or.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:885:31: ( lhs_pattern )?
+                // src/main/resources/org/drools/lang/DRL.g:885:31: ( lhs_pattern )?
                 if ( stream_lhs_pattern.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_pattern.next());
 
                 }
                 stream_lhs_pattern.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:885:44: ( RIGHT_PAREN )?
+                // src/main/resources/org/drools/lang/DRL.g:885:44: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
                     adaptor.addChild(root_1, stream_RIGHT_PAREN.next());
 
@@ -7142,7 +7180,7 @@
     };
 
     // $ANTLR start lhs_eval
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:888:1: lhs_eval : ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) ;
+    // src/main/resources/org/drools/lang/DRL.g:888:1: lhs_eval : ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) ;
     public final lhs_eval_return lhs_eval() throws RecognitionException {
         lhs_eval_return retval = new lhs_eval_return();
         retval.start = input.LT(1);
@@ -7154,13 +7192,13 @@
         paren_chunk_return pc = null;
 
 
+        RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         RewriteRuleSubtreeStream stream_eval_key=new RewriteRuleSubtreeStream(adaptor,"rule eval_key");
-        RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:889:2: (ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:889:4: ev= eval_key pc= paren_chunk
+            // src/main/resources/org/drools/lang/DRL.g:889:2: (ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) )
+            // src/main/resources/org/drools/lang/DRL.g:889:4: ev= eval_key pc= paren_chunk
             {
-            pushFollow(FOLLOW_eval_key_in_lhs_eval2610);
+            pushFollow(FOLLOW_eval_key_in_lhs_eval2616);
             ev=eval_key();
             _fsp--;
             if (failed) return retval;
@@ -7168,7 +7206,7 @@
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_EVAL);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_lhs_eval2619);
+            pushFollow(FOLLOW_paren_chunk_in_lhs_eval2625);
             pc=paren_chunk();
             _fsp--;
             if (failed) return retval;
@@ -7194,7 +7232,7 @@
             root_0 = (Object)adaptor.nil();
             // 895:3: -> ^( eval_key paren_chunk )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:895:6: ^( eval_key paren_chunk )
+                // src/main/resources/org/drools/lang/DRL.g:895:6: ^( eval_key paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_eval_key.nextNode(), root_1);
@@ -7233,83 +7271,83 @@
     };
 
     // $ANTLR start lhs_forall
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:898:1: lhs_forall : forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN ) ;
+    // src/main/resources/org/drools/lang/DRL.g:898:1: lhs_forall : forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN ) ;
     public final lhs_forall_return lhs_forall() throws RecognitionException {
         lhs_forall_return retval = new lhs_forall_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN154=null;
-        Token RIGHT_PAREN156=null;
-        forall_key_return forall_key153 = null;
+        Token LEFT_PAREN155=null;
+        Token RIGHT_PAREN157=null;
+        forall_key_return forall_key154 = null;
 
-        lhs_pattern_return lhs_pattern155 = null;
+        lhs_pattern_return lhs_pattern156 = null;
 
 
-        Object LEFT_PAREN154_tree=null;
-        Object RIGHT_PAREN156_tree=null;
+        Object LEFT_PAREN155_tree=null;
+        Object RIGHT_PAREN157_tree=null;
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
         RewriteRuleSubtreeStream stream_forall_key=new RewriteRuleSubtreeStream(adaptor,"rule forall_key");
         RewriteRuleSubtreeStream stream_lhs_pattern=new RewriteRuleSubtreeStream(adaptor,"rule lhs_pattern");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:899:2: ( forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:899:4: forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN
+            // src/main/resources/org/drools/lang/DRL.g:899:2: ( forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN ) )
+            // src/main/resources/org/drools/lang/DRL.g:899:4: forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN
             {
-            pushFollow(FOLLOW_forall_key_in_lhs_forall2646);
-            forall_key153=forall_key();
+            pushFollow(FOLLOW_forall_key_in_lhs_forall2652);
+            forall_key154=forall_key();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) stream_forall_key.add(forall_key153.getTree());
-            LEFT_PAREN154=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forall2651); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN154);
+            if ( backtracking==0 ) stream_forall_key.add(forall_key154.getTree());
+            LEFT_PAREN155=(Token)input.LT(1);
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forall2657); if (failed) return retval;
+            if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN155);
 
             if ( backtracking==0 ) {
-              	emit(LEFT_PAREN154, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_PAREN155, DroolsEditorType.SYMBOL);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:4: ( lhs_pattern )+
-            int cnt53=0;
-            loop53:
+            // src/main/resources/org/drools/lang/DRL.g:901:4: ( lhs_pattern )+
+            int cnt54=0;
+            loop54:
             do {
-                int alt53=2;
-                int LA53_0 = input.LA(1);
+                int alt54=2;
+                int LA54_0 = input.LA(1);
 
-                if ( (LA53_0==ID) ) {
-                    alt53=1;
+                if ( (LA54_0==ID) ) {
+                    alt54=1;
                 }
 
 
-                switch (alt53) {
+                switch (alt54) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:4: lhs_pattern
+            	    // src/main/resources/org/drools/lang/DRL.g:901:4: lhs_pattern
             	    {
-            	    pushFollow(FOLLOW_lhs_pattern_in_lhs_forall2659);
-            	    lhs_pattern155=lhs_pattern();
+            	    pushFollow(FOLLOW_lhs_pattern_in_lhs_forall2665);
+            	    lhs_pattern156=lhs_pattern();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_lhs_pattern.add(lhs_pattern155.getTree());
+            	    if ( backtracking==0 ) stream_lhs_pattern.add(lhs_pattern156.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    if ( cnt53 >= 1 ) break loop53;
+            	    if ( cnt54 >= 1 ) break loop54;
             	    if (backtracking>0) {failed=true; return retval;}
                         EarlyExitException eee =
-                            new EarlyExitException(53, input);
+                            new EarlyExitException(54, input);
                         throw eee;
                 }
-                cnt53++;
+                cnt54++;
             } while (true);
 
-            RIGHT_PAREN156=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall2665); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN156);
+            RIGHT_PAREN157=(Token)input.LT(1);
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall2671); if (failed) return retval;
+            if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN157);
 
             if ( backtracking==0 ) {
-              	emit(RIGHT_PAREN156, DroolsEditorType.SYMBOL);	
+              	emit(RIGHT_PAREN157, DroolsEditorType.SYMBOL);	
             }
 
             // AST REWRITE
@@ -7325,7 +7363,7 @@
             root_0 = (Object)adaptor.nil();
             // 903:3: -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:903:6: ^( forall_key ( lhs_pattern )+ RIGHT_PAREN )
+                // src/main/resources/org/drools/lang/DRL.g:903:6: ^( forall_key ( lhs_pattern )+ RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_forall_key.nextNode(), root_1);
@@ -7372,111 +7410,111 @@
     };
 
     // $ANTLR start pattern_source
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:906:1: pattern_source : lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? ;
+    // src/main/resources/org/drools/lang/DRL.g:906:1: pattern_source : lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? ;
     public final pattern_source_return pattern_source() throws RecognitionException {
         pattern_source_return retval = new pattern_source_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token FROM159=null;
-        lhs_pattern_return lhs_pattern157 = null;
+        Token FROM160=null;
+        lhs_pattern_return lhs_pattern158 = null;
 
-        over_clause_return over_clause158 = null;
+        over_clause_return over_clause159 = null;
 
-        accumulate_statement_return accumulate_statement160 = null;
+        accumulate_statement_return accumulate_statement161 = null;
 
-        collect_statement_return collect_statement161 = null;
+        collect_statement_return collect_statement162 = null;
 
-        entrypoint_statement_return entrypoint_statement162 = null;
+        entrypoint_statement_return entrypoint_statement163 = null;
 
-        from_source_return from_source163 = null;
+        from_source_return from_source164 = null;
 
 
-        Object FROM159_tree=null;
+        Object FROM160_tree=null;
 
          boolean isFailed = true;	
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:909:2: ( lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:909:4: lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
+            // src/main/resources/org/drools/lang/DRL.g:909:2: ( lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? )
+            // src/main/resources/org/drools/lang/DRL.g:909:4: lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_lhs_pattern_in_pattern_source2701);
-            lhs_pattern157=lhs_pattern();
+            pushFollow(FOLLOW_lhs_pattern_in_pattern_source2707);
+            lhs_pattern158=lhs_pattern();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, lhs_pattern157.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:910:3: ( over_clause )?
-            int alt54=2;
-            int LA54_0 = input.LA(1);
+            if ( backtracking==0 ) adaptor.addChild(root_0, lhs_pattern158.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:910:3: ( over_clause )?
+            int alt55=2;
+            int LA55_0 = input.LA(1);
 
-            if ( (LA54_0==OVER) ) {
-                alt54=1;
+            if ( (LA55_0==OVER) ) {
+                alt55=1;
             }
-            switch (alt54) {
+            switch (alt55) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:910:3: over_clause
+                    // src/main/resources/org/drools/lang/DRL.g:910:3: over_clause
                     {
-                    pushFollow(FOLLOW_over_clause_in_pattern_source2705);
-                    over_clause158=over_clause();
+                    pushFollow(FOLLOW_over_clause_in_pattern_source2711);
+                    over_clause159=over_clause();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, over_clause158.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, over_clause159.getTree());
 
                     }
                     break;
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:911:3: ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
-            int alt56=2;
-            int LA56_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:911:3: ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
+            int alt57=2;
+            int LA57_0 = input.LA(1);
 
-            if ( (LA56_0==FROM) ) {
-                alt56=1;
+            if ( (LA57_0==FROM) ) {
+                alt57=1;
             }
-            switch (alt56) {
+            switch (alt57) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:912:4: FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
+                    // src/main/resources/org/drools/lang/DRL.g:912:4: FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
                     {
-                    FROM159=(Token)input.LT(1);
-                    match(input,FROM,FOLLOW_FROM_in_pattern_source2715); if (failed) return retval;
+                    FROM160=(Token)input.LT(1);
+                    match(input,FROM,FOLLOW_FROM_in_pattern_source2721); if (failed) return retval;
                     if ( backtracking==0 ) {
-                    FROM159_tree = (Object)adaptor.create(FROM159);
-                    root_0 = (Object)adaptor.becomeRoot(FROM159_tree, root_0);
+                    FROM160_tree = (Object)adaptor.create(FROM160);
+                    root_0 = (Object)adaptor.becomeRoot(FROM160_tree, root_0);
                     }
                     if ( backtracking==0 ) {
-                      	emit(FROM159, DroolsEditorType.KEYWORD);
+                      	emit(FROM160, DroolsEditorType.KEYWORD);
                       			emit(Location.LOCATION_LHS_FROM);	
                     }
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:915:11: ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
-                    int alt55=4;
+                    // src/main/resources/org/drools/lang/DRL.g:915:11: ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
+                    int alt56=4;
                     switch ( input.LA(1) ) {
                     case ACCUMULATE:
                         {
-                        alt55=1;
+                        alt56=1;
                         }
                         break;
                     case COLLECT:
                         {
-                        alt55=2;
+                        alt56=2;
                         }
                         break;
                     case ID:
                         {
-                        int LA55_3 = input.LA(2);
+                        int LA56_3 = input.LA(2);
 
-                        if ( (LA55_3==MISC) && ((validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.POINT)))) {
-                            alt55=3;
+                        if ( (LA56_3==MISC) && ((validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.POINT)))) {
+                            alt56=3;
                         }
-                        else if ( ((LA55_3>=SEMICOLON && LA55_3<=DOT)||LA55_3==END||(LA55_3>=LEFT_PAREN && LA55_3<=RIGHT_PAREN)||(LA55_3>=DOUBLE_PIPE && LA55_3<=DOUBLE_AMPER)||LA55_3==INIT||LA55_3==THEN) ) {
-                            alt55=4;
+                        else if ( ((LA56_3>=SEMICOLON && LA56_3<=DOT)||LA56_3==END||(LA56_3>=LEFT_PAREN && LA56_3<=RIGHT_PAREN)||(LA56_3>=DOUBLE_PIPE && LA56_3<=DOUBLE_AMPER)||LA56_3==INIT||LA56_3==THEN) ) {
+                            alt56=4;
                         }
                         else {
                             if (backtracking>0) {failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("915:11: ( accumulate_statement | collect_statement | entrypoint_statement | from_source )", 55, 3, input);
+                                new NoViableAltException("915:11: ( accumulate_statement | collect_statement | entrypoint_statement | from_source )", 56, 3, input);
 
                             throw nvae;
                         }
@@ -7485,53 +7523,53 @@
                     default:
                         if (backtracking>0) {failed=true; return retval;}
                         NoViableAltException nvae =
-                            new NoViableAltException("915:11: ( accumulate_statement | collect_statement | entrypoint_statement | from_source )", 55, 0, input);
+                            new NoViableAltException("915:11: ( accumulate_statement | collect_statement | entrypoint_statement | from_source )", 56, 0, input);
 
                         throw nvae;
                     }
 
-                    switch (alt55) {
+                    switch (alt56) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:915:14: accumulate_statement
+                            // src/main/resources/org/drools/lang/DRL.g:915:14: accumulate_statement
                             {
-                            pushFollow(FOLLOW_accumulate_statement_in_pattern_source2735);
-                            accumulate_statement160=accumulate_statement();
+                            pushFollow(FOLLOW_accumulate_statement_in_pattern_source2741);
+                            accumulate_statement161=accumulate_statement();
                             _fsp--;
                             if (failed) return retval;
-                            if ( backtracking==0 ) adaptor.addChild(root_0, accumulate_statement160.getTree());
+                            if ( backtracking==0 ) adaptor.addChild(root_0, accumulate_statement161.getTree());
 
                             }
                             break;
                         case 2 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:916:15: collect_statement
+                            // src/main/resources/org/drools/lang/DRL.g:916:15: collect_statement
                             {
-                            pushFollow(FOLLOW_collect_statement_in_pattern_source2751);
-                            collect_statement161=collect_statement();
+                            pushFollow(FOLLOW_collect_statement_in_pattern_source2757);
+                            collect_statement162=collect_statement();
                             _fsp--;
                             if (failed) return retval;
-                            if ( backtracking==0 ) adaptor.addChild(root_0, collect_statement161.getTree());
+                            if ( backtracking==0 ) adaptor.addChild(root_0, collect_statement162.getTree());
 
                             }
                             break;
                         case 3 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:917:15: entrypoint_statement
+                            // src/main/resources/org/drools/lang/DRL.g:917:15: entrypoint_statement
                             {
-                            pushFollow(FOLLOW_entrypoint_statement_in_pattern_source2768);
-                            entrypoint_statement162=entrypoint_statement();
+                            pushFollow(FOLLOW_entrypoint_statement_in_pattern_source2774);
+                            entrypoint_statement163=entrypoint_statement();
                             _fsp--;
                             if (failed) return retval;
-                            if ( backtracking==0 ) adaptor.addChild(root_0, entrypoint_statement162.getTree());
+                            if ( backtracking==0 ) adaptor.addChild(root_0, entrypoint_statement163.getTree());
 
                             }
                             break;
                         case 4 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:918:15: from_source
+                            // src/main/resources/org/drools/lang/DRL.g:918:15: from_source
                             {
-                            pushFollow(FOLLOW_from_source_in_pattern_source2784);
-                            from_source163=from_source();
+                            pushFollow(FOLLOW_from_source_in_pattern_source2790);
+                            from_source164=from_source();
                             _fsp--;
                             if (failed) return retval;
-                            if ( backtracking==0 ) adaptor.addChild(root_0, from_source163.getTree());
+                            if ( backtracking==0 ) adaptor.addChild(root_0, from_source164.getTree());
 
                             }
                             break;
@@ -7586,57 +7624,57 @@
     };
 
     // $ANTLR start over_clause
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:936:1: over_clause : OVER over_elements ( COMMA over_elements )* ;
+    // src/main/resources/org/drools/lang/DRL.g:936:1: over_clause : OVER over_elements ( COMMA over_elements )* ;
     public final over_clause_return over_clause() throws RecognitionException {
         over_clause_return retval = new over_clause_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token OVER164=null;
-        Token COMMA166=null;
-        over_elements_return over_elements165 = null;
+        Token OVER165=null;
+        Token COMMA167=null;
+        over_elements_return over_elements166 = null;
 
-        over_elements_return over_elements167 = null;
+        over_elements_return over_elements168 = null;
 
 
-        Object OVER164_tree=null;
-        Object COMMA166_tree=null;
+        Object OVER165_tree=null;
+        Object COMMA167_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:937:2: ( OVER over_elements ( COMMA over_elements )* )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:937:4: OVER over_elements ( COMMA over_elements )*
+            // src/main/resources/org/drools/lang/DRL.g:937:2: ( OVER over_elements ( COMMA over_elements )* )
+            // src/main/resources/org/drools/lang/DRL.g:937:4: OVER over_elements ( COMMA over_elements )*
             {
             root_0 = (Object)adaptor.nil();
 
-            OVER164=(Token)input.LT(1);
-            match(input,OVER,FOLLOW_OVER_in_over_clause2816); if (failed) return retval;
+            OVER165=(Token)input.LT(1);
+            match(input,OVER,FOLLOW_OVER_in_over_clause2822); if (failed) return retval;
             if ( backtracking==0 ) {
-            OVER164_tree = (Object)adaptor.create(OVER164);
-            root_0 = (Object)adaptor.becomeRoot(OVER164_tree, root_0);
+            OVER165_tree = (Object)adaptor.create(OVER165);
+            root_0 = (Object)adaptor.becomeRoot(OVER165_tree, root_0);
             }
             if ( backtracking==0 ) {
-              	emit(OVER164, DroolsEditorType.KEYWORD);	
+              	emit(OVER165, DroolsEditorType.KEYWORD);	
             }
-            pushFollow(FOLLOW_over_elements_in_over_clause2821);
-            over_elements165=over_elements();
+            pushFollow(FOLLOW_over_elements_in_over_clause2827);
+            over_elements166=over_elements();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, over_elements165.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:938:4: ( COMMA over_elements )*
-            loop57:
+            if ( backtracking==0 ) adaptor.addChild(root_0, over_elements166.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:938:4: ( COMMA over_elements )*
+            loop58:
             do {
-                int alt57=2;
-                int LA57_0 = input.LA(1);
+                int alt58=2;
+                int LA58_0 = input.LA(1);
 
-                if ( (LA57_0==COMMA) ) {
-                    int LA57_2 = input.LA(2);
+                if ( (LA58_0==COMMA) ) {
+                    int LA58_2 = input.LA(2);
 
-                    if ( (LA57_2==ID) ) {
-                        int LA57_3 = input.LA(3);
+                    if ( (LA58_2==ID) ) {
+                        int LA58_3 = input.LA(3);
 
-                        if ( (LA57_3==COLON) ) {
-                            alt57=1;
+                        if ( (LA58_3==COLON) ) {
+                            alt58=1;
                         }
 
 
@@ -7646,26 +7684,26 @@
                 }
 
 
-                switch (alt57) {
+                switch (alt58) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:938:5: COMMA over_elements
+            	    // src/main/resources/org/drools/lang/DRL.g:938:5: COMMA over_elements
             	    {
-            	    COMMA166=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_over_clause2828); if (failed) return retval;
+            	    COMMA167=(Token)input.LT(1);
+            	    match(input,COMMA,FOLLOW_COMMA_in_over_clause2834); if (failed) return retval;
             	    if ( backtracking==0 ) {
-            	      	emit(COMMA166, DroolsEditorType.SYMBOL);	
+            	      	emit(COMMA167, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_over_elements_in_over_clause2833);
-            	    over_elements167=over_elements();
+            	    pushFollow(FOLLOW_over_elements_in_over_clause2839);
+            	    over_elements168=over_elements();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, over_elements167.getTree());
+            	    if ( backtracking==0 ) adaptor.addChild(root_0, over_elements168.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop57;
+            	    break loop58;
                 }
             } while (true);
 
@@ -7695,7 +7733,7 @@
     };
 
     // $ANTLR start over_elements
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:941:1: over_elements : id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) ;
+    // src/main/resources/org/drools/lang/DRL.g:941:1: over_elements : id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) ;
     public final over_elements_return over_elements() throws RecognitionException {
         over_elements_return retval = new over_elements_return();
         retval.start = input.LT(1);
@@ -7704,63 +7742,63 @@
 
         Token id1=null;
         Token id2=null;
-        Token COLON168=null;
-        paren_chunk_return paren_chunk169 = null;
+        Token COLON169=null;
+        paren_chunk_return paren_chunk170 = null;
 
 
         Object id1_tree=null;
         Object id2_tree=null;
-        Object COLON168_tree=null;
+        Object COLON169_tree=null;
         RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:942:2: (id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:942:4: id1= ID COLON id2= ID paren_chunk
+            // src/main/resources/org/drools/lang/DRL.g:942:2: (id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) )
+            // src/main/resources/org/drools/lang/DRL.g:942:4: id1= ID COLON id2= ID paren_chunk
             {
             id1=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_over_elements2848); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_over_elements2854); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id1);
 
             if ( backtracking==0 ) {
               	emit(id1, DroolsEditorType.IDENTIFIER);	
             }
-            COLON168=(Token)input.LT(1);
-            match(input,COLON,FOLLOW_COLON_in_over_elements2855); if (failed) return retval;
-            if ( backtracking==0 ) stream_COLON.add(COLON168);
+            COLON169=(Token)input.LT(1);
+            match(input,COLON,FOLLOW_COLON_in_over_elements2861); if (failed) return retval;
+            if ( backtracking==0 ) stream_COLON.add(COLON169);
 
             if ( backtracking==0 ) {
-              	emit(COLON168, DroolsEditorType.SYMBOL);	
+              	emit(COLON169, DroolsEditorType.SYMBOL);	
             }
             id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_over_elements2864); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_over_elements2870); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id2);
 
             if ( backtracking==0 ) {
               	emit(id2, DroolsEditorType.IDENTIFIER);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_over_elements2871);
-            paren_chunk169=paren_chunk();
+            pushFollow(FOLLOW_paren_chunk_in_over_elements2877);
+            paren_chunk170=paren_chunk();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) stream_paren_chunk.add(paren_chunk169.getTree());
+            if ( backtracking==0 ) stream_paren_chunk.add(paren_chunk170.getTree());
 
             // AST REWRITE
             // elements: paren_chunk, id2, id1
-            // token labels: id1, id2
+            // token labels: id2, id1
             // rule labels: retval
             // token list labels: 
             // rule list labels: 
             if ( backtracking==0 ) {
             retval.tree = root_0;
+            RewriteRuleTokenStream stream_id2=new RewriteRuleTokenStream(adaptor,"token id2",id2);
             RewriteRuleTokenStream stream_id1=new RewriteRuleTokenStream(adaptor,"token id1",id1);
-            RewriteRuleTokenStream stream_id2=new RewriteRuleTokenStream(adaptor,"token id2",id2);
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
             // 946:2: -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:946:5: ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
+                // src/main/resources/org/drools/lang/DRL.g:946:5: ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_BEHAVIOR, "VT_BEHAVIOR"), root_1);
@@ -7801,75 +7839,75 @@
     };
 
     // $ANTLR start accumulate_statement
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:949:1: accumulate_statement : ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN ) ;
+    // src/main/resources/org/drools/lang/DRL.g:949:1: accumulate_statement : ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN ) ;
     public final accumulate_statement_return accumulate_statement() throws RecognitionException {
         accumulate_statement_return retval = new accumulate_statement_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token ACCUMULATE170=null;
-        Token LEFT_PAREN171=null;
-        Token COMMA173=null;
-        Token RIGHT_PAREN176=null;
-        lhs_or_return lhs_or172 = null;
+        Token ACCUMULATE171=null;
+        Token LEFT_PAREN172=null;
+        Token COMMA174=null;
+        Token RIGHT_PAREN177=null;
+        lhs_or_return lhs_or173 = null;
 
-        accumulate_init_clause_return accumulate_init_clause174 = null;
+        accumulate_init_clause_return accumulate_init_clause175 = null;
 
-        accumulate_id_clause_return accumulate_id_clause175 = null;
+        accumulate_id_clause_return accumulate_id_clause176 = null;
 
 
-        Object ACCUMULATE170_tree=null;
-        Object LEFT_PAREN171_tree=null;
-        Object COMMA173_tree=null;
-        Object RIGHT_PAREN176_tree=null;
-        RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
+        Object ACCUMULATE171_tree=null;
+        Object LEFT_PAREN172_tree=null;
+        Object COMMA174_tree=null;
+        Object RIGHT_PAREN177_tree=null;
         RewriteRuleTokenStream stream_ACCUMULATE=new RewriteRuleTokenStream(adaptor,"token ACCUMULATE");
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
-        RewriteRuleSubtreeStream stream_lhs_or=new RewriteRuleSubtreeStream(adaptor,"rule lhs_or");
+        RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
         RewriteRuleSubtreeStream stream_accumulate_init_clause=new RewriteRuleSubtreeStream(adaptor,"rule accumulate_init_clause");
         RewriteRuleSubtreeStream stream_accumulate_id_clause=new RewriteRuleSubtreeStream(adaptor,"rule accumulate_id_clause");
+        RewriteRuleSubtreeStream stream_lhs_or=new RewriteRuleSubtreeStream(adaptor,"rule lhs_or");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:950:2: ( ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:950:4: ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN
+            // src/main/resources/org/drools/lang/DRL.g:950:2: ( ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN ) )
+            // src/main/resources/org/drools/lang/DRL.g:950:4: ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN
             {
-            ACCUMULATE170=(Token)input.LT(1);
-            match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_accumulate_statement2897); if (failed) return retval;
-            if ( backtracking==0 ) stream_ACCUMULATE.add(ACCUMULATE170);
+            ACCUMULATE171=(Token)input.LT(1);
+            match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_accumulate_statement2903); if (failed) return retval;
+            if ( backtracking==0 ) stream_ACCUMULATE.add(ACCUMULATE171);
 
             if ( backtracking==0 ) {
-              	emit(ACCUMULATE170, DroolsEditorType.KEYWORD);	
+              	emit(ACCUMULATE171, DroolsEditorType.KEYWORD);	
             }
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_ACCUMULATE);	
             }
-            LEFT_PAREN171=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_statement2906); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN171);
+            LEFT_PAREN172=(Token)input.LT(1);
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_statement2912); if (failed) return retval;
+            if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN172);
 
             if ( backtracking==0 ) {
-              	emit(LEFT_PAREN171, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_PAREN172, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_lhs_or_in_accumulate_statement2914);
-            lhs_or172=lhs_or();
+            pushFollow(FOLLOW_lhs_or_in_accumulate_statement2920);
+            lhs_or173=lhs_or();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) stream_lhs_or.add(lhs_or172.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:954:3: ( COMMA )?
-            int alt58=2;
-            int LA58_0 = input.LA(1);
+            if ( backtracking==0 ) stream_lhs_or.add(lhs_or173.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:954:3: ( COMMA )?
+            int alt59=2;
+            int LA59_0 = input.LA(1);
 
-            if ( (LA58_0==COMMA) ) {
-                alt58=1;
+            if ( (LA59_0==COMMA) ) {
+                alt59=1;
             }
-            switch (alt58) {
+            switch (alt59) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:954:3: COMMA
+                    // src/main/resources/org/drools/lang/DRL.g:954:3: COMMA
                     {
-                    COMMA173=(Token)input.LT(1);
-                    match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement2919); if (failed) return retval;
-                    if ( backtracking==0 ) stream_COMMA.add(COMMA173);
+                    COMMA174=(Token)input.LT(1);
+                    match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement2925); if (failed) return retval;
+                    if ( backtracking==0 ) stream_COMMA.add(COMMA174);
 
 
                     }
@@ -7878,64 +7916,64 @@
             }
 
             if ( backtracking==0 ) {
-              	emit(COMMA173, DroolsEditorType.SYMBOL);	
+              	emit(COMMA174, DroolsEditorType.SYMBOL);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:955:3: ( accumulate_init_clause | accumulate_id_clause )
-            int alt59=2;
-            int LA59_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:955:3: ( accumulate_init_clause | accumulate_id_clause )
+            int alt60=2;
+            int LA60_0 = input.LA(1);
 
-            if ( (LA59_0==INIT) ) {
-                alt59=1;
+            if ( (LA60_0==INIT) ) {
+                alt60=1;
             }
-            else if ( (LA59_0==ID) ) {
-                alt59=2;
+            else if ( (LA60_0==ID) ) {
+                alt60=2;
             }
             else {
                 if (backtracking>0) {failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("955:3: ( accumulate_init_clause | accumulate_id_clause )", 59, 0, input);
+                    new NoViableAltException("955:3: ( accumulate_init_clause | accumulate_id_clause )", 60, 0, input);
 
                 throw nvae;
             }
-            switch (alt59) {
+            switch (alt60) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:955:5: accumulate_init_clause
+                    // src/main/resources/org/drools/lang/DRL.g:955:5: accumulate_init_clause
                     {
-                    pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_statement2929);
-                    accumulate_init_clause174=accumulate_init_clause();
+                    pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_statement2935);
+                    accumulate_init_clause175=accumulate_init_clause();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_accumulate_init_clause.add(accumulate_init_clause174.getTree());
+                    if ( backtracking==0 ) stream_accumulate_init_clause.add(accumulate_init_clause175.getTree());
 
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:956:5: accumulate_id_clause
+                    // src/main/resources/org/drools/lang/DRL.g:956:5: accumulate_id_clause
                     {
-                    pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_statement2935);
-                    accumulate_id_clause175=accumulate_id_clause();
+                    pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_statement2941);
+                    accumulate_id_clause176=accumulate_id_clause();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_accumulate_id_clause.add(accumulate_id_clause175.getTree());
+                    if ( backtracking==0 ) stream_accumulate_id_clause.add(accumulate_id_clause176.getTree());
 
                     }
                     break;
 
             }
 
-            RIGHT_PAREN176=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_statement2943); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN176);
+            RIGHT_PAREN177=(Token)input.LT(1);
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_statement2949); if (failed) return retval;
+            if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN177);
 
             if ( backtracking==0 ) {
-              	emit(RIGHT_PAREN176, DroolsEditorType.SYMBOL);	
+              	emit(RIGHT_PAREN177, DroolsEditorType.SYMBOL);	
             }
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
             }
 
             // AST REWRITE
-            // elements: ACCUMULATE, lhs_or, accumulate_id_clause, accumulate_init_clause, RIGHT_PAREN
+            // elements: accumulate_init_clause, lhs_or, ACCUMULATE, RIGHT_PAREN, accumulate_id_clause
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -7947,19 +7985,19 @@
             root_0 = (Object)adaptor.nil();
             // 960:3: -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:960:6: ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
+                // src/main/resources/org/drools/lang/DRL.g:960:6: ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_ACCUMULATE.next(), root_1);
 
                 adaptor.addChild(root_1, stream_lhs_or.next());
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:960:26: ( accumulate_init_clause )?
+                // src/main/resources/org/drools/lang/DRL.g:960:26: ( accumulate_init_clause )?
                 if ( stream_accumulate_init_clause.hasNext() ) {
                     adaptor.addChild(root_1, stream_accumulate_init_clause.next());
 
                 }
                 stream_accumulate_init_clause.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:960:50: ( accumulate_id_clause )?
+                // src/main/resources/org/drools/lang/DRL.g:960:50: ( accumulate_id_clause )?
                 if ( stream_accumulate_id_clause.hasNext() ) {
                     adaptor.addChild(root_1, stream_accumulate_id_clause.next());
 
@@ -7999,7 +8037,7 @@
     };
 
     // $ANTLR start accumulate_init_clause
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:964:1: accumulate_init_clause : INIT pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE] -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) ) ;
+    // src/main/resources/org/drools/lang/DRL.g:964:1: accumulate_init_clause : INIT pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE] -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) ) ;
     public final accumulate_init_clause_return accumulate_init_clause() throws RecognitionException {
         accumulate_init_clause_return retval = new accumulate_init_clause_return();
         retval.start = input.LT(1);
@@ -8009,7 +8047,7 @@
         Token cm1=null;
         Token cm2=null;
         Token cm3=null;
-        Token INIT177=null;
+        Token INIT178=null;
         accumulate_paren_chunk_return pc1 = null;
 
         accumulate_paren_chunk_return pc2 = null;
@@ -8020,54 +8058,54 @@
 
         accumulate_paren_chunk_return pc4 = null;
 
-        action_key_return action_key178 = null;
+        action_key_return action_key179 = null;
 
-        reverse_key_return reverse_key179 = null;
+        reverse_key_return reverse_key180 = null;
 
 
         Object cm1_tree=null;
         Object cm2_tree=null;
         Object cm3_tree=null;
-        Object INIT177_tree=null;
+        Object INIT178_tree=null;
         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
         RewriteRuleTokenStream stream_INIT=new RewriteRuleTokenStream(adaptor,"token INIT");
+        RewriteRuleSubtreeStream stream_action_key=new RewriteRuleSubtreeStream(adaptor,"rule action_key");
         RewriteRuleSubtreeStream stream_accumulate_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule accumulate_paren_chunk");
         RewriteRuleSubtreeStream stream_reverse_key=new RewriteRuleSubtreeStream(adaptor,"rule reverse_key");
         RewriteRuleSubtreeStream stream_result_key=new RewriteRuleSubtreeStream(adaptor,"rule result_key");
-        RewriteRuleSubtreeStream stream_action_key=new RewriteRuleSubtreeStream(adaptor,"rule action_key");
          boolean isFailed = true;	
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:967:2: ( INIT pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE] -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:967:4: INIT pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE]
+            // src/main/resources/org/drools/lang/DRL.g:967:2: ( INIT pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE] -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) ) )
+            // src/main/resources/org/drools/lang/DRL.g:967:4: INIT pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE]
             {
-            INIT177=(Token)input.LT(1);
-            match(input,INIT,FOLLOW_INIT_in_accumulate_init_clause2989); if (failed) return retval;
-            if ( backtracking==0 ) stream_INIT.add(INIT177);
+            INIT178=(Token)input.LT(1);
+            match(input,INIT,FOLLOW_INIT_in_accumulate_init_clause2995); if (failed) return retval;
+            if ( backtracking==0 ) stream_INIT.add(INIT178);
 
             if ( backtracking==0 ) {
-              	emit(INIT177, DroolsEditorType.KEYWORD);	
+              	emit(INIT178, DroolsEditorType.KEYWORD);	
             }
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_ACCUMULATE_INIT);	
             }
-            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3000);
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3006);
             pc1=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE);
             _fsp--;
             if (failed) return retval;
             if ( backtracking==0 ) stream_accumulate_paren_chunk.add(pc1.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:969:84: (cm1= COMMA )?
-            int alt60=2;
-            int LA60_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:969:84: (cm1= COMMA )?
+            int alt61=2;
+            int LA61_0 = input.LA(1);
 
-            if ( (LA60_0==COMMA) ) {
-                alt60=1;
+            if ( (LA61_0==COMMA) ) {
+                alt61=1;
             }
-            switch (alt60) {
+            switch (alt61) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:969:84: cm1= COMMA
+                    // src/main/resources/org/drools/lang/DRL.g:969:84: cm1= COMMA
                     {
                     cm1=(Token)input.LT(1);
-                    match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3005); if (failed) return retval;
+                    match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3011); if (failed) return retval;
                     if ( backtracking==0 ) stream_COMMA.add(cm1);
 
 
@@ -8082,29 +8120,29 @@
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION);	
             }
-            pushFollow(FOLLOW_action_key_in_accumulate_init_clause3016);
-            action_key178=action_key();
+            pushFollow(FOLLOW_action_key_in_accumulate_init_clause3022);
+            action_key179=action_key();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) stream_action_key.add(action_key178.getTree());
-            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3020);
+            if ( backtracking==0 ) stream_action_key.add(action_key179.getTree());
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3026);
             pc2=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE);
             _fsp--;
             if (failed) return retval;
             if ( backtracking==0 ) stream_accumulate_paren_chunk.add(pc2.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:971:97: (cm2= COMMA )?
-            int alt61=2;
-            int LA61_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:971:97: (cm2= COMMA )?
+            int alt62=2;
+            int LA62_0 = input.LA(1);
 
-            if ( (LA61_0==COMMA) ) {
-                alt61=1;
+            if ( (LA62_0==COMMA) ) {
+                alt62=1;
             }
-            switch (alt61) {
+            switch (alt62) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:971:97: cm2= COMMA
+                    // src/main/resources/org/drools/lang/DRL.g:971:97: cm2= COMMA
                     {
                     cm2=(Token)input.LT(1);
-                    match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3025); if (failed) return retval;
+                    match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3031); if (failed) return retval;
                     if ( backtracking==0 ) stream_COMMA.add(cm2);
 
 
@@ -8119,36 +8157,36 @@
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:974:2: ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )?
-            int alt63=2;
-            alt63 = dfa63.predict(input);
-            switch (alt63) {
+            // src/main/resources/org/drools/lang/DRL.g:974:2: ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )?
+            int alt64=2;
+            alt64 = dfa64.predict(input);
+            switch (alt64) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:974:4: reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )?
+                    // src/main/resources/org/drools/lang/DRL.g:974:4: reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )?
                     {
-                    pushFollow(FOLLOW_reverse_key_in_accumulate_init_clause3038);
-                    reverse_key179=reverse_key();
+                    pushFollow(FOLLOW_reverse_key_in_accumulate_init_clause3044);
+                    reverse_key180=reverse_key();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_reverse_key.add(reverse_key179.getTree());
-                    pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3042);
+                    if ( backtracking==0 ) stream_reverse_key.add(reverse_key180.getTree());
+                    pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3048);
                     pc3=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE);
                     _fsp--;
                     if (failed) return retval;
                     if ( backtracking==0 ) stream_accumulate_paren_chunk.add(pc3.getTree());
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:974:100: (cm3= COMMA )?
-                    int alt62=2;
-                    int LA62_0 = input.LA(1);
+                    // src/main/resources/org/drools/lang/DRL.g:974:100: (cm3= COMMA )?
+                    int alt63=2;
+                    int LA63_0 = input.LA(1);
 
-                    if ( (LA62_0==COMMA) ) {
-                        alt62=1;
+                    if ( (LA63_0==COMMA) ) {
+                        alt63=1;
                     }
-                    switch (alt62) {
+                    switch (alt63) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:974:100: cm3= COMMA
+                            // src/main/resources/org/drools/lang/DRL.g:974:100: cm3= COMMA
                             {
                             cm3=(Token)input.LT(1);
-                            match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3047); if (failed) return retval;
+                            match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3053); if (failed) return retval;
                             if ( backtracking==0 ) stream_COMMA.add(cm3);
 
 
@@ -8169,7 +8207,7 @@
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT);	
             }
-            pushFollow(FOLLOW_result_key_in_accumulate_init_clause3062);
+            pushFollow(FOLLOW_result_key_in_accumulate_init_clause3068);
             res1=result_key();
             _fsp--;
             if (failed) return retval;
@@ -8177,35 +8215,35 @@
             if ( backtracking==0 ) {
               	emit(((Token)res1.start), DroolsEditorType.KEYWORD);	
             }
-            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3068);
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3074);
             pc4=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE);
             _fsp--;
             if (failed) return retval;
             if ( backtracking==0 ) stream_accumulate_paren_chunk.add(pc4.getTree());
 
             // AST REWRITE
-            // elements: pc4, INIT, result_key, pc1, action_key, pc3, reverse_key, pc2
+            // elements: pc2, pc1, pc3, result_key, reverse_key, INIT, pc4, action_key
             // token labels: 
-            // rule labels: pc2, pc3, pc4, pc1, retval
+            // rule labels: pc4, pc3, retval, pc1, pc2
             // token list labels: 
             // rule list labels: 
             if ( backtracking==0 ) {
             retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_pc2=new RewriteRuleSubtreeStream(adaptor,"token pc2",pc2!=null?pc2.tree:null);
+            RewriteRuleSubtreeStream stream_pc4=new RewriteRuleSubtreeStream(adaptor,"token pc4",pc4!=null?pc4.tree:null);
             RewriteRuleSubtreeStream stream_pc3=new RewriteRuleSubtreeStream(adaptor,"token pc3",pc3!=null?pc3.tree:null);
-            RewriteRuleSubtreeStream stream_pc4=new RewriteRuleSubtreeStream(adaptor,"token pc4",pc4!=null?pc4.tree:null);
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
             RewriteRuleSubtreeStream stream_pc1=new RewriteRuleSubtreeStream(adaptor,"token pc1",pc1!=null?pc1.tree:null);
-            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+            RewriteRuleSubtreeStream stream_pc2=new RewriteRuleSubtreeStream(adaptor,"token pc2",pc2!=null?pc2.tree:null);
 
             root_0 = (Object)adaptor.nil();
             // 977:2: -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:977:5: ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
+                // src/main/resources/org/drools/lang/DRL.g:977:5: ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_ACCUMULATE_INIT_CLAUSE, "VT_ACCUMULATE_INIT_CLAUSE"), root_1);
 
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:977:33: ^( INIT $pc1)
+                // src/main/resources/org/drools/lang/DRL.g:977:33: ^( INIT $pc1)
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(stream_INIT.next(), root_2);
@@ -8214,7 +8252,7 @@
 
                 adaptor.addChild(root_1, root_2);
                 }
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:977:46: ^( action_key $pc2)
+                // src/main/resources/org/drools/lang/DRL.g:977:46: ^( action_key $pc2)
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(stream_action_key.nextNode(), root_2);
@@ -8223,9 +8261,9 @@
 
                 adaptor.addChild(root_1, root_2);
                 }
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:977:65: ( ^( reverse_key $pc3) )?
+                // src/main/resources/org/drools/lang/DRL.g:977:65: ( ^( reverse_key $pc3) )?
                 if ( stream_pc3.hasNext()||stream_reverse_key.hasNext() ) {
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:977:65: ^( reverse_key $pc3)
+                    // src/main/resources/org/drools/lang/DRL.g:977:65: ^( reverse_key $pc3)
                     {
                     Object root_2 = (Object)adaptor.nil();
                     root_2 = (Object)adaptor.becomeRoot(stream_reverse_key.nextNode(), root_2);
@@ -8238,7 +8276,7 @@
                 }
                 stream_pc3.reset();
                 stream_reverse_key.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:977:86: ^( result_key $pc4)
+                // src/main/resources/org/drools/lang/DRL.g:977:86: ^( result_key $pc4)
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(stream_result_key.nextNode(), root_2);
@@ -8293,7 +8331,7 @@
     };
 
     // $ANTLR start accumulate_paren_chunk
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:990:1: accumulate_paren_chunk[int locationType] : pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] ;
+    // src/main/resources/org/drools/lang/DRL.g:990:1: accumulate_paren_chunk[int locationType] : pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] ;
     public final accumulate_paren_chunk_return accumulate_paren_chunk(int locationType) throws RecognitionException {
         accumulate_paren_chunk_return retval = new accumulate_paren_chunk_return();
         retval.start = input.LT(1);
@@ -8308,10 +8346,10 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:993:3: (pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:993:5: pc= accumulate_paren_chunk_data[false,$locationType]
+            // src/main/resources/org/drools/lang/DRL.g:993:3: (pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] )
+            // src/main/resources/org/drools/lang/DRL.g:993:5: pc= accumulate_paren_chunk_data[false,$locationType]
             {
-            pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3126);
+            pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3132);
             pc=accumulate_paren_chunk_data(false, locationType);
             _fsp--;
             if (failed) return retval;
@@ -8364,7 +8402,7 @@
     };
 
     // $ANTLR start accumulate_paren_chunk_data
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:997:1: accumulate_paren_chunk_data[boolean isRecursive, int locationType] : lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN ;
+    // src/main/resources/org/drools/lang/DRL.g:997:1: accumulate_paren_chunk_data[boolean isRecursive, int locationType] : lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN ;
     public final accumulate_paren_chunk_data_return accumulate_paren_chunk_data(boolean isRecursive, int locationType) throws RecognitionException {
         accumulate_paren_chunk_data_return retval = new accumulate_paren_chunk_data_return();
         retval.start = input.LT(1);
@@ -8374,7 +8412,7 @@
         Token lp1=null;
         Token any=null;
         Token rp1=null;
-        accumulate_paren_chunk_data_return accumulate_paren_chunk_data180 = null;
+        accumulate_paren_chunk_data_return accumulate_paren_chunk_data181 = null;
 
 
         Object lp1_tree=null;
@@ -8382,13 +8420,13 @@
         Object rp1_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:998:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:998:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN
+            // src/main/resources/org/drools/lang/DRL.g:998:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN )
+            // src/main/resources/org/drools/lang/DRL.g:998:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN
             {
             root_0 = (Object)adaptor.nil();
 
             lp1=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3150); if (failed) return retval;
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3156); if (failed) return retval;
             if ( backtracking==0 ) {
             lp1_tree = (Object)adaptor.create(lp1);
             adaptor.addChild(root_0, lp1_tree);
@@ -8402,23 +8440,23 @@
               			}	
               		
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1006:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )*
-            loop64:
+            // src/main/resources/org/drools/lang/DRL.g:1006:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )*
+            loop65:
             do {
-                int alt64=3;
-                int LA64_0 = input.LA(1);
+                int alt65=3;
+                int LA65_0 = input.LA(1);
 
-                if ( ((LA64_0>=VT_COMPILATION_UNIT && LA64_0<=STRING)||LA64_0==COMMA||(LA64_0>=AT && LA64_0<=MULTI_LINE_COMMENT)) ) {
-                    alt64=1;
+                if ( ((LA65_0>=VT_COMPILATION_UNIT && LA65_0<=STRING)||LA65_0==COMMA||(LA65_0>=AT && LA65_0<=MULTI_LINE_COMMENT)) ) {
+                    alt65=1;
                 }
-                else if ( (LA64_0==LEFT_PAREN) ) {
-                    alt64=2;
+                else if ( (LA65_0==LEFT_PAREN) ) {
+                    alt65=2;
                 }
 
 
-                switch (alt64) {
+                switch (alt65) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1006:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
+            	    // src/main/resources/org/drools/lang/DRL.g:1006:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
             	    {
             	    any=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=STRING)||input.LA(1)==COMMA||(input.LA(1)>=AT && input.LA(1)<=MULTI_LINE_COMMENT) ) {
@@ -8430,7 +8468,7 @@
             	        if (backtracking>0) {failed=true; return retval;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_accumulate_paren_chunk_data3162);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_accumulate_paren_chunk_data3168);    throw mse;
             	    }
 
             	    if ( backtracking==0 ) {
@@ -8440,24 +8478,24 @@
             	    }
             	    break;
             	case 2 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1006:87: accumulate_paren_chunk_data[true,-1]
+            	    // src/main/resources/org/drools/lang/DRL.g:1006:87: accumulate_paren_chunk_data[true,-1]
             	    {
-            	    pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3178);
-            	    accumulate_paren_chunk_data180=accumulate_paren_chunk_data(true, -1);
+            	    pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3184);
+            	    accumulate_paren_chunk_data181=accumulate_paren_chunk_data(true, -1);
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, accumulate_paren_chunk_data180.getTree());
+            	    if ( backtracking==0 ) adaptor.addChild(root_0, accumulate_paren_chunk_data181.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop64;
+            	    break loop65;
                 }
             } while (true);
 
             rp1=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3189); if (failed) return retval;
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3195); if (failed) return retval;
             if ( backtracking==0 ) {
             rp1_tree = (Object)adaptor.create(rp1);
             adaptor.addChild(root_0, rp1_tree);
@@ -8496,36 +8534,36 @@
     };
 
     // $ANTLR start accumulate_id_clause
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1016:1: accumulate_id_clause : ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1016:1: accumulate_id_clause : ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) ;
     public final accumulate_id_clause_return accumulate_id_clause() throws RecognitionException {
         accumulate_id_clause_return retval = new accumulate_id_clause_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token ID181=null;
-        paren_chunk_return paren_chunk182 = null;
+        Token ID182=null;
+        paren_chunk_return paren_chunk183 = null;
 
 
-        Object ID181_tree=null;
+        Object ID182_tree=null;
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1017:2: ( ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1017:4: ID paren_chunk
+            // src/main/resources/org/drools/lang/DRL.g:1017:2: ( ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) )
+            // src/main/resources/org/drools/lang/DRL.g:1017:4: ID paren_chunk
             {
-            ID181=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_accumulate_id_clause3205); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID181);
+            ID182=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_accumulate_id_clause3211); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID182);
 
             if ( backtracking==0 ) {
-              	emit(ID181, DroolsEditorType.IDENTIFIER);	
+              	emit(ID182, DroolsEditorType.IDENTIFIER);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_accumulate_id_clause3211);
-            paren_chunk182=paren_chunk();
+            pushFollow(FOLLOW_paren_chunk_in_accumulate_id_clause3217);
+            paren_chunk183=paren_chunk();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) stream_paren_chunk.add(paren_chunk182.getTree());
+            if ( backtracking==0 ) stream_paren_chunk.add(paren_chunk183.getTree());
 
             // AST REWRITE
             // elements: paren_chunk, ID
@@ -8540,7 +8578,7 @@
             root_0 = (Object)adaptor.nil();
             // 1019:2: -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1019:5: ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
+                // src/main/resources/org/drools/lang/DRL.g:1019:5: ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_ACCUMULATE_ID_CLAUSE, "VT_ACCUMULATE_ID_CLAUSE"), root_1);
@@ -8580,65 +8618,65 @@
     };
 
     // $ANTLR start collect_statement
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1022:1: collect_statement : COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1022:1: collect_statement : COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) ;
     public final collect_statement_return collect_statement() throws RecognitionException {
         collect_statement_return retval = new collect_statement_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token COLLECT183=null;
-        Token LEFT_PAREN184=null;
-        Token RIGHT_PAREN186=null;
-        pattern_source_return pattern_source185 = null;
+        Token COLLECT184=null;
+        Token LEFT_PAREN185=null;
+        Token RIGHT_PAREN187=null;
+        pattern_source_return pattern_source186 = null;
 
 
-        Object COLLECT183_tree=null;
-        Object LEFT_PAREN184_tree=null;
-        Object RIGHT_PAREN186_tree=null;
+        Object COLLECT184_tree=null;
+        Object LEFT_PAREN185_tree=null;
+        Object RIGHT_PAREN187_tree=null;
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
         RewriteRuleTokenStream stream_COLLECT=new RewriteRuleTokenStream(adaptor,"token COLLECT");
         RewriteRuleSubtreeStream stream_pattern_source=new RewriteRuleSubtreeStream(adaptor,"rule pattern_source");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1023:2: ( COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1023:4: COLLECT LEFT_PAREN pattern_source RIGHT_PAREN
+            // src/main/resources/org/drools/lang/DRL.g:1023:2: ( COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) )
+            // src/main/resources/org/drools/lang/DRL.g:1023:4: COLLECT LEFT_PAREN pattern_source RIGHT_PAREN
             {
-            COLLECT183=(Token)input.LT(1);
-            match(input,COLLECT,FOLLOW_COLLECT_in_collect_statement3233); if (failed) return retval;
-            if ( backtracking==0 ) stream_COLLECT.add(COLLECT183);
+            COLLECT184=(Token)input.LT(1);
+            match(input,COLLECT,FOLLOW_COLLECT_in_collect_statement3239); if (failed) return retval;
+            if ( backtracking==0 ) stream_COLLECT.add(COLLECT184);
 
             if ( backtracking==0 ) {
-              	emit(COLLECT183, DroolsEditorType.KEYWORD);	
+              	emit(COLLECT184, DroolsEditorType.KEYWORD);	
             }
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_COLLECT);	
             }
-            LEFT_PAREN184=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_collect_statement3242); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN184);
+            LEFT_PAREN185=(Token)input.LT(1);
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_collect_statement3248); if (failed) return retval;
+            if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN185);
 
             if ( backtracking==0 ) {
-              	emit(LEFT_PAREN184, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_PAREN185, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_pattern_source_in_collect_statement3249);
-            pattern_source185=pattern_source();
+            pushFollow(FOLLOW_pattern_source_in_collect_statement3255);
+            pattern_source186=pattern_source();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) stream_pattern_source.add(pattern_source185.getTree());
-            RIGHT_PAREN186=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_collect_statement3254); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN186);
+            if ( backtracking==0 ) stream_pattern_source.add(pattern_source186.getTree());
+            RIGHT_PAREN187=(Token)input.LT(1);
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_collect_statement3260); if (failed) return retval;
+            if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN187);
 
             if ( backtracking==0 ) {
-              	emit(RIGHT_PAREN186, DroolsEditorType.SYMBOL);	
+              	emit(RIGHT_PAREN187, DroolsEditorType.SYMBOL);	
             }
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
             }
 
             // AST REWRITE
-            // elements: RIGHT_PAREN, COLLECT, pattern_source
+            // elements: COLLECT, RIGHT_PAREN, pattern_source
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -8650,7 +8688,7 @@
             root_0 = (Object)adaptor.nil();
             // 1029:2: -> ^( COLLECT pattern_source RIGHT_PAREN )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1029:5: ^( COLLECT pattern_source RIGHT_PAREN )
+                // src/main/resources/org/drools/lang/DRL.g:1029:5: ^( COLLECT pattern_source RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_COLLECT.next(), root_1);
@@ -8690,37 +8728,37 @@
     };
 
     // $ANTLR start entrypoint_statement
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1032:1: entrypoint_statement : entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1032:1: entrypoint_statement : entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) ;
     public final entrypoint_statement_return entrypoint_statement() throws RecognitionException {
         entrypoint_statement_return retval = new entrypoint_statement_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        entry_point_key_return entry_point_key187 = null;
+        entry_point_key_return entry_point_key188 = null;
 
-        entrypoint_id_return entrypoint_id188 = null;
+        entrypoint_id_return entrypoint_id189 = null;
 
 
         RewriteRuleSubtreeStream stream_entrypoint_id=new RewriteRuleSubtreeStream(adaptor,"rule entrypoint_id");
         RewriteRuleSubtreeStream stream_entry_point_key=new RewriteRuleSubtreeStream(adaptor,"rule entry_point_key");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1033:2: ( entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1033:4: entry_point_key entrypoint_id
+            // src/main/resources/org/drools/lang/DRL.g:1033:2: ( entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) )
+            // src/main/resources/org/drools/lang/DRL.g:1033:4: entry_point_key entrypoint_id
             {
-            pushFollow(FOLLOW_entry_point_key_in_entrypoint_statement3281);
-            entry_point_key187=entry_point_key();
+            pushFollow(FOLLOW_entry_point_key_in_entrypoint_statement3287);
+            entry_point_key188=entry_point_key();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) stream_entry_point_key.add(entry_point_key187.getTree());
+            if ( backtracking==0 ) stream_entry_point_key.add(entry_point_key188.getTree());
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_COLLECT);	
             }
-            pushFollow(FOLLOW_entrypoint_id_in_entrypoint_statement3289);
-            entrypoint_id188=entrypoint_id();
+            pushFollow(FOLLOW_entrypoint_id_in_entrypoint_statement3295);
+            entrypoint_id189=entrypoint_id();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) stream_entrypoint_id.add(entrypoint_id188.getTree());
+            if ( backtracking==0 ) stream_entrypoint_id.add(entrypoint_id189.getTree());
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
             }
@@ -8738,7 +8776,7 @@
             root_0 = (Object)adaptor.nil();
             // 1037:2: -> ^( entry_point_key entrypoint_id )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1037:5: ^( entry_point_key entrypoint_id )
+                // src/main/resources/org/drools/lang/DRL.g:1037:5: ^( entry_point_key entrypoint_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_entry_point_key.nextNode(), root_1);
@@ -8777,7 +8815,7 @@
     };
 
     // $ANTLR start entrypoint_id
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1040:1: entrypoint_id : (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] );
+    // src/main/resources/org/drools/lang/DRL.g:1040:1: entrypoint_id : (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] );
     public final entrypoint_id_return entrypoint_id() throws RecognitionException {
         entrypoint_id_return retval = new entrypoint_id_return();
         retval.start = input.LT(1);
@@ -8787,33 +8825,33 @@
         Token value=null;
 
         Object value_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1041:2: (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] )
-            int alt65=2;
-            int LA65_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:1041:2: (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] )
+            int alt66=2;
+            int LA66_0 = input.LA(1);
 
-            if ( (LA65_0==ID) ) {
-                alt65=1;
+            if ( (LA66_0==ID) ) {
+                alt66=1;
             }
-            else if ( (LA65_0==STRING) ) {
-                alt65=2;
+            else if ( (LA66_0==STRING) ) {
+                alt66=2;
             }
             else {
                 if (backtracking>0) {failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1040:1: entrypoint_id : (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] );", 65, 0, input);
+                    new NoViableAltException("1040:1: entrypoint_id : (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] );", 66, 0, input);
 
                 throw nvae;
             }
-            switch (alt65) {
+            switch (alt66) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1041:5: value= ID
+                    // src/main/resources/org/drools/lang/DRL.g:1041:5: value= ID
                     {
                     value=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_entrypoint_id3315); if (failed) return retval;
+                    match(input,ID,FOLLOW_ID_in_entrypoint_id3321); if (failed) return retval;
                     if ( backtracking==0 ) stream_ID.add(value);
 
                     if ( backtracking==0 ) {
@@ -8842,10 +8880,10 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1043:5: value= STRING
+                    // src/main/resources/org/drools/lang/DRL.g:1043:5: value= STRING
                     {
                     value=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_entrypoint_id3332); if (failed) return retval;
+                    match(input,STRING,FOLLOW_STRING_in_entrypoint_id3338); if (failed) return retval;
                     if ( backtracking==0 ) stream_STRING.add(value);
 
                     if ( backtracking==0 ) {
@@ -8898,42 +8936,42 @@
     };
 
     // $ANTLR start from_source
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1047:1: from_source : ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1047:1: from_source : ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) ;
     public final from_source_return from_source() throws RecognitionException {
         from_source_return retval = new from_source_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token ID189=null;
+        Token ID190=null;
         paren_chunk_return args = null;
 
-        expression_chain_return expression_chain190 = null;
+        expression_chain_return expression_chain191 = null;
 
 
-        Object ID189_tree=null;
+        Object ID190_tree=null;
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         RewriteRuleSubtreeStream stream_expression_chain=new RewriteRuleSubtreeStream(adaptor,"rule expression_chain");
-        RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1048:2: ( ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1048:4: ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )?
+            // src/main/resources/org/drools/lang/DRL.g:1048:2: ( ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) )
+            // src/main/resources/org/drools/lang/DRL.g:1048:4: ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )?
             {
-            ID189=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_from_source3352); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID189);
+            ID190=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_from_source3358); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID190);
 
             if ( backtracking==0 ) {
-              	emit(ID189, DroolsEditorType.IDENTIFIER);	
+              	emit(ID190, DroolsEditorType.IDENTIFIER);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1049:3: ( ( LEFT_PAREN )=>args= paren_chunk )?
-            int alt66=2;
-            alt66 = dfa66.predict(input);
-            switch (alt66) {
+            // src/main/resources/org/drools/lang/DRL.g:1049:3: ( ( LEFT_PAREN )=>args= paren_chunk )?
+            int alt67=2;
+            alt67 = dfa67.predict(input);
+            switch (alt67) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1049:5: ( LEFT_PAREN )=>args= paren_chunk
+                    // src/main/resources/org/drools/lang/DRL.g:1049:5: ( LEFT_PAREN )=>args= paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_from_source3367);
+                    pushFollow(FOLLOW_paren_chunk_in_from_source3373);
                     args=paren_chunk();
                     _fsp--;
                     if (failed) return retval;
@@ -8944,22 +8982,22 @@
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1050:3: ( expression_chain )?
-            int alt67=2;
-            int LA67_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:1050:3: ( expression_chain )?
+            int alt68=2;
+            int LA68_0 = input.LA(1);
 
-            if ( (LA67_0==DOT) ) {
-                alt67=1;
+            if ( (LA68_0==DOT) ) {
+                alt68=1;
             }
-            switch (alt67) {
+            switch (alt68) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1050:3: expression_chain
+                    // src/main/resources/org/drools/lang/DRL.g:1050:3: expression_chain
                     {
-                    pushFollow(FOLLOW_expression_chain_in_from_source3374);
-                    expression_chain190=expression_chain();
+                    pushFollow(FOLLOW_expression_chain_in_from_source3380);
+                    expression_chain191=expression_chain();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_expression_chain.add(expression_chain190.getTree());
+                    if ( backtracking==0 ) stream_expression_chain.add(expression_chain191.getTree());
 
                     }
                     break;
@@ -8975,7 +9013,7 @@
             }
 
             // AST REWRITE
-            // elements: paren_chunk, expression_chain, ID
+            // elements: expression_chain, paren_chunk, ID
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -8987,19 +9025,19 @@
             root_0 = (Object)adaptor.nil();
             // 1056:2: -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1056:5: ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
+                // src/main/resources/org/drools/lang/DRL.g:1056:5: ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_FROM_SOURCE, "VT_FROM_SOURCE"), root_1);
 
                 adaptor.addChild(root_1, stream_ID.next());
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1056:25: ( paren_chunk )?
+                // src/main/resources/org/drools/lang/DRL.g:1056:25: ( paren_chunk )?
                 if ( stream_paren_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_paren_chunk.next());
 
                 }
                 stream_paren_chunk.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1056:38: ( expression_chain )?
+                // src/main/resources/org/drools/lang/DRL.g:1056:38: ( expression_chain )?
                 if ( stream_expression_chain.hasNext() ) {
                     adaptor.addChild(root_1, stream_expression_chain.next());
 
@@ -9038,250 +9076,96 @@
     };
 
     // $ANTLR start expression_chain
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1059:1: expression_chain : DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1059:1: expression_chain : DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) ;
     public final expression_chain_return expression_chain() throws RecognitionException {
         expression_chain_return retval = new expression_chain_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token DOT191=null;
-        Token ID192=null;
-        paren_chunk_return paren_chunk193 = null;
+        Token DOT192=null;
+        Token ID193=null;
+        paren_chunk_return paren_chunk194 = null;
 
-        square_chunk_return square_chunk194 = null;
+        square_chunk_return square_chunk195 = null;
 
-        expression_chain_return expression_chain195 = null;
+        expression_chain_return expression_chain196 = null;
 
 
-        Object DOT191_tree=null;
-        Object ID192_tree=null;
+        Object DOT192_tree=null;
+        Object ID193_tree=null;
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         RewriteRuleSubtreeStream stream_square_chunk=new RewriteRuleSubtreeStream(adaptor,"rule square_chunk");
         RewriteRuleSubtreeStream stream_expression_chain=new RewriteRuleSubtreeStream(adaptor,"rule expression_chain");
-        RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1060:2: ( DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1061:3: DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )?
+            // src/main/resources/org/drools/lang/DRL.g:1060:2: ( DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) )
+            // src/main/resources/org/drools/lang/DRL.g:1061:3: DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )?
             {
-            DOT191=(Token)input.LT(1);
-            match(input,DOT,FOLLOW_DOT_in_expression_chain3407); if (failed) return retval;
-            if ( backtracking==0 ) stream_DOT.add(DOT191);
+            DOT192=(Token)input.LT(1);
+            match(input,DOT,FOLLOW_DOT_in_expression_chain3413); if (failed) return retval;
+            if ( backtracking==0 ) stream_DOT.add(DOT192);
 
             if ( backtracking==0 ) {
-              	emit(DOT191, DroolsEditorType.IDENTIFIER);	
+              	emit(DOT192, DroolsEditorType.IDENTIFIER);	
             }
-            ID192=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_expression_chain3414); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID192);
+            ID193=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_expression_chain3420); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID193);
 
             if ( backtracking==0 ) {
-              	emit(ID192, DroolsEditorType.IDENTIFIER);	
+              	emit(ID193, DroolsEditorType.IDENTIFIER);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1063:4: ({...}? paren_chunk | square_chunk )?
-            int alt68=3;
-            int LA68_0 = input.LA(1);
-
-            if ( (LA68_0==LEFT_PAREN) ) {
-                switch ( input.LA(2) ) {
-                    case LEFT_PAREN:
-                        {
-                        int LA68_4 = input.LA(3);
-
-                        if ( (input.LA(1) == LEFT_PAREN) ) {
-                            alt68=1;
-                        }
-                        }
-                        break;
-                    case ID:
-                        {
-                        int LA68_5 = input.LA(3);
-
-                        if ( (input.LA(1) == LEFT_PAREN) ) {
-                            alt68=1;
-                        }
-                        }
-                        break;
-                    case VT_COMPILATION_UNIT:
-                    case VT_FUNCTION_IMPORT:
-                    case VT_FACT:
-                    case VT_CONSTRAINTS:
-                    case VT_LABEL:
-                    case VT_QUERY_ID:
-                    case VT_TEMPLATE_ID:
-                    case VT_TYPE_DECLARE_ID:
-                    case VT_RULE_ID:
-                    case VT_ENTRYPOINT_ID:
-                    case VT_SLOT_ID:
-                    case VT_SLOT:
-                    case VT_RULE_ATTRIBUTES:
-                    case VT_RHS_CHUNK:
-                    case VT_CURLY_CHUNK:
-                    case VT_SQUARE_CHUNK:
-                    case VT_PAREN_CHUNK:
-                    case VT_BEHAVIOR:
-                    case VT_AND_IMPLICIT:
-                    case VT_AND_PREFIX:
-                    case VT_OR_PREFIX:
-                    case VT_AND_INFIX:
-                    case VT_OR_INFIX:
-                    case VT_ACCUMULATE_INIT_CLAUSE:
-                    case VT_ACCUMULATE_ID_CLAUSE:
-                    case VT_FROM_SOURCE:
-                    case VT_EXPRESSION_CHAIN:
-                    case VT_PATTERN:
-                    case VT_FACT_BINDING:
-                    case VT_FACT_OR:
-                    case VT_BIND_FIELD:
-                    case VT_FIELD:
-                    case VT_ACCESSOR_PATH:
-                    case VT_ACCESSOR_ELEMENT:
-                    case VT_DATA_TYPE:
-                    case VT_PATTERN_TYPE:
-                    case VT_PACKAGE_ID:
-                    case VT_IMPORT_ID:
-                    case VT_GLOBAL_ID:
-                    case VT_FUNCTION_ID:
-                    case VT_PARAM_LIST:
-                    case VK_DATE_EFFECTIVE:
-                    case VK_DATE_EXPIRES:
-                    case VK_LOCK_ON_ACTIVE:
-                    case VK_NO_LOOP:
-                    case VK_AUTO_FOCUS:
-                    case VK_ACTIVATION_GROUP:
-                    case VK_AGENDA_GROUP:
-                    case VK_RULEFLOW_GROUP:
-                    case VK_DURATION:
-                    case VK_DIALECT:
-                    case VK_SALIENCE:
-                    case VK_ENABLED:
-                    case VK_ATTRIBUTES:
-                    case VK_RULE:
-                    case VK_IMPORT:
-                    case VK_PACKAGE:
-                    case VK_TEMPLATE:
-                    case VK_QUERY:
-                    case VK_DECLARE:
-                    case VK_FUNCTION:
-                    case VK_GLOBAL:
-                    case VK_EVAL:
-                    case VK_CONTAINS:
-                    case VK_MATCHES:
-                    case VK_EXCLUDES:
-                    case VK_SOUNDSLIKE:
-                    case VK_MEMBEROF:
-                    case VK_ENTRY_POINT:
-                    case VK_NOT:
-                    case VK_IN:
-                    case VK_OR:
-                    case VK_AND:
-                    case VK_EXISTS:
-                    case VK_FORALL:
-                    case VK_ACTION:
-                    case VK_REVERSE:
-                    case VK_RESULT:
-                    case SEMICOLON:
-                    case DOT:
-                    case DOT_STAR:
-                    case END:
-                    case STRING:
-                    case COMMA:
-                    case RIGHT_PAREN:
-                    case AT:
-                    case COLON:
-                    case EQUALS:
-                    case WHEN:
-                    case BOOL:
-                    case INT:
-                    case DOUBLE_PIPE:
-                    case DOUBLE_AMPER:
-                    case FROM:
-                    case OVER:
-                    case ACCUMULATE:
-                    case INIT:
-                    case COLLECT:
-                    case ARROW:
-                    case EQUAL:
-                    case GREATER:
-                    case GREATER_EQUAL:
-                    case LESS:
-                    case LESS_EQUAL:
-                    case NOT_EQUAL:
-                    case GRAVE_ACCENT:
-                    case FLOAT:
-                    case NULL:
-                    case LEFT_SQUARE:
-                    case RIGHT_SQUARE:
-                    case THEN:
-                    case LEFT_CURLY:
-                    case RIGHT_CURLY:
-                    case MISC:
-                    case EOL:
-                    case WS:
-                    case EscapeSequence:
-                    case HexDigit:
-                    case UnicodeEscape:
-                    case OctalEscape:
-                    case SH_STYLE_SINGLE_LINE_COMMENT:
-                    case C_STYLE_SINGLE_LINE_COMMENT:
-                    case MULTI_LINE_COMMENT:
-                        {
-                        alt68=1;
-                        }
-                        break;
-                }
-
-            }
-            else if ( (LA68_0==LEFT_SQUARE) ) {
-                alt68=2;
-            }
-            switch (alt68) {
+            // src/main/resources/org/drools/lang/DRL.g:1063:4: ({...}? paren_chunk | square_chunk )?
+            int alt69=3;
+            alt69 = dfa69.predict(input);
+            switch (alt69) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1064:6: {...}? paren_chunk
+                    // src/main/resources/org/drools/lang/DRL.g:1064:6: {...}? paren_chunk
                     {
                     if ( !(input.LA(1) == LEFT_PAREN) ) {
                         if (backtracking>0) {failed=true; return retval;}
                         throw new FailedPredicateException(input, "expression_chain", "input.LA(1) == LEFT_PAREN");
                     }
-                    pushFollow(FOLLOW_paren_chunk_in_expression_chain3430);
-                    paren_chunk193=paren_chunk();
+                    pushFollow(FOLLOW_paren_chunk_in_expression_chain3436);
+                    paren_chunk194=paren_chunk();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_paren_chunk.add(paren_chunk193.getTree());
+                    if ( backtracking==0 ) stream_paren_chunk.add(paren_chunk194.getTree());
 
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1066:6: square_chunk
+                    // src/main/resources/org/drools/lang/DRL.g:1066:6: square_chunk
                     {
-                    pushFollow(FOLLOW_square_chunk_in_expression_chain3444);
-                    square_chunk194=square_chunk();
+                    pushFollow(FOLLOW_square_chunk_in_expression_chain3450);
+                    square_chunk195=square_chunk();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_square_chunk.add(square_chunk194.getTree());
+                    if ( backtracking==0 ) stream_square_chunk.add(square_chunk195.getTree());
 
                     }
                     break;
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1068:4: ( expression_chain )?
-            int alt69=2;
-            int LA69_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:1068:4: ( expression_chain )?
+            int alt70=2;
+            int LA70_0 = input.LA(1);
 
-            if ( (LA69_0==DOT) ) {
-                alt69=1;
+            if ( (LA70_0==DOT) ) {
+                alt70=1;
             }
-            switch (alt69) {
+            switch (alt70) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1068:4: expression_chain
+                    // src/main/resources/org/drools/lang/DRL.g:1068:4: expression_chain
                     {
-                    pushFollow(FOLLOW_expression_chain_in_expression_chain3455);
-                    expression_chain195=expression_chain();
+                    pushFollow(FOLLOW_expression_chain_in_expression_chain3461);
+                    expression_chain196=expression_chain();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_expression_chain.add(expression_chain195.getTree());
+                    if ( backtracking==0 ) stream_expression_chain.add(expression_chain196.getTree());
 
                     }
                     break;
@@ -9290,7 +9174,7 @@
 
 
             // AST REWRITE
-            // elements: expression_chain, paren_chunk, ID, square_chunk
+            // elements: paren_chunk, expression_chain, ID, square_chunk
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -9302,25 +9186,25 @@
             root_0 = (Object)adaptor.nil();
             // 1069:4: -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1069:7: ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
+                // src/main/resources/org/drools/lang/DRL.g:1069:7: ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_EXPRESSION_CHAIN, DOT191), root_1);
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_EXPRESSION_CHAIN, DOT192), root_1);
 
                 adaptor.addChild(root_1, stream_ID.next());
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1069:38: ( square_chunk )?
+                // src/main/resources/org/drools/lang/DRL.g:1069:38: ( square_chunk )?
                 if ( stream_square_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_square_chunk.next());
 
                 }
                 stream_square_chunk.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1069:52: ( paren_chunk )?
+                // src/main/resources/org/drools/lang/DRL.g:1069:52: ( paren_chunk )?
                 if ( stream_paren_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_paren_chunk.next());
 
                 }
                 stream_paren_chunk.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1069:65: ( expression_chain )?
+                // src/main/resources/org/drools/lang/DRL.g:1069:65: ( expression_chain )?
                 if ( stream_expression_chain.hasNext() ) {
                     adaptor.addChild(root_1, stream_expression_chain.next());
 
@@ -9359,38 +9243,38 @@
     };
 
     // $ANTLR start lhs_pattern
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1072:1: lhs_pattern : ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) );
+    // src/main/resources/org/drools/lang/DRL.g:1072:1: lhs_pattern : ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) );
     public final lhs_pattern_return lhs_pattern() throws RecognitionException {
         lhs_pattern_return retval = new lhs_pattern_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        fact_binding_return fact_binding196 = null;
+        fact_binding_return fact_binding197 = null;
 
-        fact_return fact197 = null;
+        fact_return fact198 = null;
 
 
         RewriteRuleSubtreeStream stream_fact_binding=new RewriteRuleSubtreeStream(adaptor,"rule fact_binding");
         RewriteRuleSubtreeStream stream_fact=new RewriteRuleSubtreeStream(adaptor,"rule fact");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1073:2: ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) )
-            int alt70=2;
-            int LA70_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:1073:2: ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) )
+            int alt71=2;
+            int LA71_0 = input.LA(1);
 
-            if ( (LA70_0==ID) ) {
-                int LA70_1 = input.LA(2);
+            if ( (LA71_0==ID) ) {
+                int LA71_1 = input.LA(2);
 
-                if ( (LA70_1==COLON) ) {
-                    alt70=1;
+                if ( (LA71_1==COLON) ) {
+                    alt71=1;
                 }
-                else if ( (LA70_1==DOT||LA70_1==LEFT_PAREN||LA70_1==LEFT_SQUARE) ) {
-                    alt70=2;
+                else if ( (LA71_1==DOT||LA71_1==LEFT_PAREN||LA71_1==LEFT_SQUARE) ) {
+                    alt71=2;
                 }
                 else {
                     if (backtracking>0) {failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1072:1: lhs_pattern : ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) );", 70, 1, input);
+                        new NoViableAltException("1072:1: lhs_pattern : ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) );", 71, 1, input);
 
                     throw nvae;
                 }
@@ -9398,19 +9282,19 @@
             else {
                 if (backtracking>0) {failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1072:1: lhs_pattern : ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) );", 70, 0, input);
+                    new NoViableAltException("1072:1: lhs_pattern : ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) );", 71, 0, input);
 
                 throw nvae;
             }
-            switch (alt70) {
+            switch (alt71) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1073:4: fact_binding
+                    // src/main/resources/org/drools/lang/DRL.g:1073:4: fact_binding
                     {
-                    pushFollow(FOLLOW_fact_binding_in_lhs_pattern3488);
-                    fact_binding196=fact_binding();
+                    pushFollow(FOLLOW_fact_binding_in_lhs_pattern3494);
+                    fact_binding197=fact_binding();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_fact_binding.add(fact_binding196.getTree());
+                    if ( backtracking==0 ) stream_fact_binding.add(fact_binding197.getTree());
 
                     // AST REWRITE
                     // elements: fact_binding
@@ -9425,7 +9309,7 @@
                     root_0 = (Object)adaptor.nil();
                     // 1073:17: -> ^( VT_PATTERN fact_binding )
                     {
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1073:20: ^( VT_PATTERN fact_binding )
+                        // src/main/resources/org/drools/lang/DRL.g:1073:20: ^( VT_PATTERN fact_binding )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_PATTERN, "VT_PATTERN"), root_1);
@@ -9442,13 +9326,13 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1074:4: fact
+                    // src/main/resources/org/drools/lang/DRL.g:1074:4: fact
                     {
-                    pushFollow(FOLLOW_fact_in_lhs_pattern3501);
-                    fact197=fact();
+                    pushFollow(FOLLOW_fact_in_lhs_pattern3507);
+                    fact198=fact();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_fact.add(fact197.getTree());
+                    if ( backtracking==0 ) stream_fact.add(fact198.getTree());
 
                     // AST REWRITE
                     // elements: fact
@@ -9463,7 +9347,7 @@
                     root_0 = (Object)adaptor.nil();
                     // 1074:9: -> ^( VT_PATTERN fact )
                     {
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1074:12: ^( VT_PATTERN fact )
+                        // src/main/resources/org/drools/lang/DRL.g:1074:12: ^( VT_PATTERN fact )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_PATTERN, "VT_PATTERN"), root_1);
@@ -9504,88 +9388,88 @@
     };
 
     // $ANTLR start fact_binding
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1077:1: fact_binding : label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1077:1: fact_binding : label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) ;
     public final fact_binding_return fact_binding() throws RecognitionException {
         fact_binding_return retval = new fact_binding_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN200=null;
-        Token RIGHT_PAREN202=null;
-        label_return label198 = null;
+        Token LEFT_PAREN201=null;
+        Token RIGHT_PAREN203=null;
+        label_return label199 = null;
 
-        fact_return fact199 = null;
+        fact_return fact200 = null;
 
-        fact_binding_expression_return fact_binding_expression201 = null;
+        fact_binding_expression_return fact_binding_expression202 = null;
 
 
-        Object LEFT_PAREN200_tree=null;
-        Object RIGHT_PAREN202_tree=null;
+        Object LEFT_PAREN201_tree=null;
+        Object RIGHT_PAREN203_tree=null;
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
+        RewriteRuleSubtreeStream stream_fact=new RewriteRuleSubtreeStream(adaptor,"rule fact");
+        RewriteRuleSubtreeStream stream_fact_binding_expression=new RewriteRuleSubtreeStream(adaptor,"rule fact_binding_expression");
         RewriteRuleSubtreeStream stream_label=new RewriteRuleSubtreeStream(adaptor,"rule label");
-        RewriteRuleSubtreeStream stream_fact_binding_expression=new RewriteRuleSubtreeStream(adaptor,"rule fact_binding_expression");
-        RewriteRuleSubtreeStream stream_fact=new RewriteRuleSubtreeStream(adaptor,"rule fact");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1078:3: ( label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1078:5: label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
+            // src/main/resources/org/drools/lang/DRL.g:1078:3: ( label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) )
+            // src/main/resources/org/drools/lang/DRL.g:1078:5: label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
             {
-            pushFollow(FOLLOW_label_in_fact_binding3521);
-            label198=label();
+            pushFollow(FOLLOW_label_in_fact_binding3527);
+            label199=label();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) stream_label.add(label198.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1079:3: ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
-            int alt71=2;
-            int LA71_0 = input.LA(1);
+            if ( backtracking==0 ) stream_label.add(label199.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:1079:3: ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
+            int alt72=2;
+            int LA72_0 = input.LA(1);
 
-            if ( (LA71_0==ID) ) {
-                alt71=1;
+            if ( (LA72_0==ID) ) {
+                alt72=1;
             }
-            else if ( (LA71_0==LEFT_PAREN) ) {
-                alt71=2;
+            else if ( (LA72_0==LEFT_PAREN) ) {
+                alt72=2;
             }
             else {
                 if (backtracking>0) {failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1079:3: ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )", 71, 0, input);
+                    new NoViableAltException("1079:3: ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )", 72, 0, input);
 
                 throw nvae;
             }
-            switch (alt71) {
+            switch (alt72) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1079:5: fact
+                    // src/main/resources/org/drools/lang/DRL.g:1079:5: fact
                     {
-                    pushFollow(FOLLOW_fact_in_fact_binding3527);
-                    fact199=fact();
+                    pushFollow(FOLLOW_fact_in_fact_binding3533);
+                    fact200=fact();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_fact.add(fact199.getTree());
+                    if ( backtracking==0 ) stream_fact.add(fact200.getTree());
 
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1080:6: LEFT_PAREN fact_binding_expression RIGHT_PAREN
+                    // src/main/resources/org/drools/lang/DRL.g:1080:6: LEFT_PAREN fact_binding_expression RIGHT_PAREN
                     {
-                    LEFT_PAREN200=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_binding3534); if (failed) return retval;
-                    if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN200);
+                    LEFT_PAREN201=(Token)input.LT(1);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_binding3540); if (failed) return retval;
+                    if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN201);
 
                     if ( backtracking==0 ) {
-                      	emit(LEFT_PAREN200, DroolsEditorType.SYMBOL);	
+                      	emit(LEFT_PAREN201, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_fact_binding_expression_in_fact_binding3542);
-                    fact_binding_expression201=fact_binding_expression();
+                    pushFollow(FOLLOW_fact_binding_expression_in_fact_binding3548);
+                    fact_binding_expression202=fact_binding_expression();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_fact_binding_expression.add(fact_binding_expression201.getTree());
-                    RIGHT_PAREN202=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_binding3550); if (failed) return retval;
-                    if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN202);
+                    if ( backtracking==0 ) stream_fact_binding_expression.add(fact_binding_expression202.getTree());
+                    RIGHT_PAREN203=(Token)input.LT(1);
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_binding3556); if (failed) return retval;
+                    if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN203);
 
                     if ( backtracking==0 ) {
-                      	emit(RIGHT_PAREN202, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN203, DroolsEditorType.SYMBOL);	
                     }
 
                     }
@@ -9595,7 +9479,7 @@
 
 
             // AST REWRITE
-            // elements: RIGHT_PAREN, label, fact, fact_binding_expression
+            // elements: fact_binding_expression, fact, label, RIGHT_PAREN
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -9607,25 +9491,25 @@
             root_0 = (Object)adaptor.nil();
             // 1084:3: -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1084:6: ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
+                // src/main/resources/org/drools/lang/DRL.g:1084:6: ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_FACT_BINDING, "VT_FACT_BINDING"), root_1);
 
                 adaptor.addChild(root_1, stream_label.next());
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1084:30: ( fact )?
+                // src/main/resources/org/drools/lang/DRL.g:1084:30: ( fact )?
                 if ( stream_fact.hasNext() ) {
                     adaptor.addChild(root_1, stream_fact.next());
 
                 }
                 stream_fact.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1084:36: ( fact_binding_expression )?
+                // src/main/resources/org/drools/lang/DRL.g:1084:36: ( fact_binding_expression )?
                 if ( stream_fact_binding_expression.hasNext() ) {
                     adaptor.addChild(root_1, stream_fact_binding_expression.next());
 
                 }
                 stream_fact_binding_expression.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1084:61: ( RIGHT_PAREN )?
+                // src/main/resources/org/drools/lang/DRL.g:1084:61: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
                     adaptor.addChild(root_1, stream_RIGHT_PAREN.next());
 
@@ -9664,7 +9548,7 @@
     };
 
     // $ANTLR start fact_binding_expression
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1087:1: fact_binding_expression : ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* ;
+    // src/main/resources/org/drools/lang/DRL.g:1087:1: fact_binding_expression : ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* ;
     public final fact_binding_expression_return fact_binding_expression() throws RecognitionException {
         fact_binding_expression_return retval = new fact_binding_expression_return();
         retval.start = input.LT(1);
@@ -9674,30 +9558,30 @@
         Token pipe=null;
         or_key_return value = null;
 
-        fact_return fact203 = null;
-
         fact_return fact204 = null;
 
+        fact_return fact205 = null;
 
+
         Object pipe_tree=null;
         RewriteRuleTokenStream stream_DOUBLE_PIPE=new RewriteRuleTokenStream(adaptor,"token DOUBLE_PIPE");
+        RewriteRuleSubtreeStream stream_fact=new RewriteRuleSubtreeStream(adaptor,"rule fact");
         RewriteRuleSubtreeStream stream_or_key=new RewriteRuleSubtreeStream(adaptor,"rule or_key");
-        RewriteRuleSubtreeStream stream_fact=new RewriteRuleSubtreeStream(adaptor,"rule fact");
 
         	Token orToken = null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1090:3: ( ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1090:5: ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
+            // src/main/resources/org/drools/lang/DRL.g:1090:3: ( ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* )
+            // src/main/resources/org/drools/lang/DRL.g:1090:5: ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
             {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1090:5: ( fact -> fact )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1090:6: fact
+            // src/main/resources/org/drools/lang/DRL.g:1090:5: ( fact -> fact )
+            // src/main/resources/org/drools/lang/DRL.g:1090:6: fact
             {
-            pushFollow(FOLLOW_fact_in_fact_binding_expression3591);
-            fact203=fact();
+            pushFollow(FOLLOW_fact_in_fact_binding_expression3597);
+            fact204=fact();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) stream_fact.add(fact203.getTree());
+            if ( backtracking==0 ) stream_fact.add(fact204.getTree());
 
             // AST REWRITE
             // elements: fact
@@ -9720,46 +9604,46 @@
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1090:20: ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
-            loop73:
+            // src/main/resources/org/drools/lang/DRL.g:1090:20: ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
+            loop74:
             do {
-                int alt73=2;
-                int LA73_0 = input.LA(1);
+                int alt74=2;
+                int LA74_0 = input.LA(1);
 
-                if ( (LA73_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.OR)))) {
-                    alt73=1;
+                if ( (LA74_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.OR)))) {
+                    alt74=1;
                 }
-                else if ( (LA73_0==DOUBLE_PIPE) ) {
-                    alt73=1;
+                else if ( (LA74_0==DOUBLE_PIPE) ) {
+                    alt74=1;
                 }
 
 
-                switch (alt73) {
+                switch (alt74) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1090:22: (value= or_key | pipe= DOUBLE_PIPE ) fact
+            	    // src/main/resources/org/drools/lang/DRL.g:1090:22: (value= or_key | pipe= DOUBLE_PIPE ) fact
             	    {
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1090:22: (value= or_key | pipe= DOUBLE_PIPE )
-            	    int alt72=2;
-            	    int LA72_0 = input.LA(1);
+            	    // src/main/resources/org/drools/lang/DRL.g:1090:22: (value= or_key | pipe= DOUBLE_PIPE )
+            	    int alt73=2;
+            	    int LA73_0 = input.LA(1);
 
-            	    if ( (LA72_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.OR)))) {
-            	        alt72=1;
+            	    if ( (LA73_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.OR)))) {
+            	        alt73=1;
             	    }
-            	    else if ( (LA72_0==DOUBLE_PIPE) ) {
-            	        alt72=2;
+            	    else if ( (LA73_0==DOUBLE_PIPE) ) {
+            	        alt73=2;
             	    }
             	    else {
             	        if (backtracking>0) {failed=true; return retval;}
             	        NoViableAltException nvae =
-            	            new NoViableAltException("1090:22: (value= or_key | pipe= DOUBLE_PIPE )", 72, 0, input);
+            	            new NoViableAltException("1090:22: (value= or_key | pipe= DOUBLE_PIPE )", 73, 0, input);
 
             	        throw nvae;
             	    }
-            	    switch (alt72) {
+            	    switch (alt73) {
             	        case 1 :
-            	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1090:23: value= or_key
+            	            // src/main/resources/org/drools/lang/DRL.g:1090:23: value= or_key
             	            {
-            	            pushFollow(FOLLOW_or_key_in_fact_binding_expression3603);
+            	            pushFollow(FOLLOW_or_key_in_fact_binding_expression3609);
             	            value=or_key();
             	            _fsp--;
             	            if (failed) return retval;
@@ -9771,10 +9655,10 @@
             	            }
             	            break;
             	        case 2 :
-            	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1090:62: pipe= DOUBLE_PIPE
+            	            // src/main/resources/org/drools/lang/DRL.g:1090:62: pipe= DOUBLE_PIPE
             	            {
             	            pipe=(Token)input.LT(1);
-            	            match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_binding_expression3609); if (failed) return retval;
+            	            match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_binding_expression3615); if (failed) return retval;
             	            if ( backtracking==0 ) stream_DOUBLE_PIPE.add(pipe);
 
             	            if ( backtracking==0 ) {
@@ -9786,14 +9670,14 @@
 
             	    }
 
-            	    pushFollow(FOLLOW_fact_in_fact_binding_expression3614);
-            	    fact204=fact();
+            	    pushFollow(FOLLOW_fact_in_fact_binding_expression3620);
+            	    fact205=fact();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_fact.add(fact204.getTree());
+            	    if ( backtracking==0 ) stream_fact.add(fact205.getTree());
 
             	    // AST REWRITE
-            	    // elements: fact, fact_binding_expression
+            	    // elements: fact_binding_expression, fact
             	    // token labels: 
             	    // rule labels: retval
             	    // token list labels: 
@@ -9805,7 +9689,7 @@
             	    root_0 = (Object)adaptor.nil();
             	    // 1091:3: -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
             	    {
-            	        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1091:6: ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
+            	        // src/main/resources/org/drools/lang/DRL.g:1091:6: ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_FACT_OR, orToken), root_1);
@@ -9824,7 +9708,7 @@
             	    break;
 
             	default :
-            	    break loop73;
+            	    break loop74;
                 }
             } while (true);
 
@@ -9854,84 +9738,84 @@
     };
 
     // $ANTLR start fact
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1094:1: fact : pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1094:1: fact : pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN ) ;
     public final fact_return fact() throws RecognitionException {
         fact_return retval = new fact_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN206=null;
-        Token RIGHT_PAREN208=null;
-        pattern_type_return pattern_type205 = null;
+        Token LEFT_PAREN207=null;
+        Token RIGHT_PAREN209=null;
+        pattern_type_return pattern_type206 = null;
 
-        constraints_return constraints207 = null;
+        constraints_return constraints208 = null;
 
 
-        Object LEFT_PAREN206_tree=null;
-        Object RIGHT_PAREN208_tree=null;
+        Object LEFT_PAREN207_tree=null;
+        Object RIGHT_PAREN209_tree=null;
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
+        RewriteRuleSubtreeStream stream_constraints=new RewriteRuleSubtreeStream(adaptor,"rule constraints");
         RewriteRuleSubtreeStream stream_pattern_type=new RewriteRuleSubtreeStream(adaptor,"rule pattern_type");
-        RewriteRuleSubtreeStream stream_constraints=new RewriteRuleSubtreeStream(adaptor,"rule constraints");
          boolean isFailedOnConstraints = true; pushParaphrases(DroolsParaphraseTypes.PATTERN); 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1097:2: ( pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1097:4: pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN
+            // src/main/resources/org/drools/lang/DRL.g:1097:2: ( pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN ) )
+            // src/main/resources/org/drools/lang/DRL.g:1097:4: pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN
             {
-            pushFollow(FOLLOW_pattern_type_in_fact3654);
-            pattern_type205=pattern_type();
+            pushFollow(FOLLOW_pattern_type_in_fact3660);
+            pattern_type206=pattern_type();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) stream_pattern_type.add(pattern_type205.getTree());
-            LEFT_PAREN206=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact3659); if (failed) return retval;
-            if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN206);
+            if ( backtracking==0 ) stream_pattern_type.add(pattern_type206.getTree());
+            LEFT_PAREN207=(Token)input.LT(1);
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact3665); if (failed) return retval;
+            if ( backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN207);
 
             if ( backtracking==0 ) {
-              	emit(LEFT_PAREN206, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_PAREN207, DroolsEditorType.SYMBOL);	
             }
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1100:4: ( constraints )?
-            int alt74=2;
-            int LA74_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:1100:4: ( constraints )?
+            int alt75=2;
+            int LA75_0 = input.LA(1);
 
-            if ( (LA74_0==ID||LA74_0==LEFT_PAREN) ) {
-                alt74=1;
+            if ( (LA75_0==ID||LA75_0==LEFT_PAREN) ) {
+                alt75=1;
             }
-            switch (alt74) {
+            switch (alt75) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1100:4: constraints
+                    // src/main/resources/org/drools/lang/DRL.g:1100:4: constraints
                     {
-                    pushFollow(FOLLOW_constraints_in_fact3670);
-                    constraints207=constraints();
+                    pushFollow(FOLLOW_constraints_in_fact3676);
+                    constraints208=constraints();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_constraints.add(constraints207.getTree());
+                    if ( backtracking==0 ) stream_constraints.add(constraints208.getTree());
 
                     }
                     break;
 
             }
 
-            RIGHT_PAREN208=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact3676); if (failed) return retval;
-            if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN208);
+            RIGHT_PAREN209=(Token)input.LT(1);
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact3682); if (failed) return retval;
+            if ( backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN209);
 
             if ( backtracking==0 ) {
               	isFailedOnConstraints = false;	
             }
             if ( backtracking==0 ) {
-              	if (RIGHT_PAREN208.getText().equals(")") ){ //WORKAROUND FOR ANTLR BUG!
-              			emit(RIGHT_PAREN208, DroolsEditorType.SYMBOL);
+              	if (RIGHT_PAREN209.getText().equals(")") ){ //WORKAROUND FOR ANTLR BUG!
+              			emit(RIGHT_PAREN209, DroolsEditorType.SYMBOL);
               			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);
               		}	
             }
 
             // AST REWRITE
-            // elements: constraints, RIGHT_PAREN, pattern_type
+            // elements: pattern_type, constraints, RIGHT_PAREN
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -9943,13 +9827,13 @@
             root_0 = (Object)adaptor.nil();
             // 1106:2: -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1106:5: ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN )
+                // src/main/resources/org/drools/lang/DRL.g:1106:5: ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_FACT, "VT_FACT"), root_1);
 
                 adaptor.addChild(root_1, stream_pattern_type.next());
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1106:28: ( constraints )?
+                // src/main/resources/org/drools/lang/DRL.g:1106:28: ( constraints )?
                 if ( stream_constraints.hasNext() ) {
                     adaptor.addChild(root_1, stream_constraints.next());
 
@@ -9999,64 +9883,64 @@
     };
 
     // $ANTLR start constraints
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1116:1: constraints : constraint ( COMMA constraint )* ;
+    // src/main/resources/org/drools/lang/DRL.g:1116:1: constraints : constraint ( COMMA constraint )* ;
     public final constraints_return constraints() throws RecognitionException {
         constraints_return retval = new constraints_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token COMMA210=null;
-        constraint_return constraint209 = null;
+        Token COMMA211=null;
+        constraint_return constraint210 = null;
 
-        constraint_return constraint211 = null;
+        constraint_return constraint212 = null;
 
 
-        Object COMMA210_tree=null;
+        Object COMMA211_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1117:2: ( constraint ( COMMA constraint )* )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1117:4: constraint ( COMMA constraint )*
+            // src/main/resources/org/drools/lang/DRL.g:1117:2: ( constraint ( COMMA constraint )* )
+            // src/main/resources/org/drools/lang/DRL.g:1117:4: constraint ( COMMA constraint )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_constraint_in_constraints3710);
-            constraint209=constraint();
+            pushFollow(FOLLOW_constraint_in_constraints3716);
+            constraint210=constraint();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, constraint209.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1117:15: ( COMMA constraint )*
-            loop75:
+            if ( backtracking==0 ) adaptor.addChild(root_0, constraint210.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:1117:15: ( COMMA constraint )*
+            loop76:
             do {
-                int alt75=2;
-                int LA75_0 = input.LA(1);
+                int alt76=2;
+                int LA76_0 = input.LA(1);
 
-                if ( (LA75_0==COMMA) ) {
-                    alt75=1;
+                if ( (LA76_0==COMMA) ) {
+                    alt76=1;
                 }
 
 
-                switch (alt75) {
+                switch (alt76) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1117:17: COMMA constraint
+            	    // src/main/resources/org/drools/lang/DRL.g:1117:17: COMMA constraint
             	    {
-            	    COMMA210=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_constraints3714); if (failed) return retval;
+            	    COMMA211=(Token)input.LT(1);
+            	    match(input,COMMA,FOLLOW_COMMA_in_constraints3720); if (failed) return retval;
             	    if ( backtracking==0 ) {
-            	      	emit(COMMA210, DroolsEditorType.SYMBOL);
+            	      	emit(COMMA211, DroolsEditorType.SYMBOL);
             	      		emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	
             	    }
-            	    pushFollow(FOLLOW_constraint_in_constraints3721);
-            	    constraint211=constraint();
+            	    pushFollow(FOLLOW_constraint_in_constraints3727);
+            	    constraint212=constraint();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, constraint211.getTree());
+            	    if ( backtracking==0 ) adaptor.addChild(root_0, constraint212.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop75;
+            	    break loop76;
                 }
             } while (true);
 
@@ -10086,28 +9970,28 @@
     };
 
     // $ANTLR start constraint
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1122:1: constraint : or_constr ;
+    // src/main/resources/org/drools/lang/DRL.g:1122:1: constraint : or_constr ;
     public final constraint_return constraint() throws RecognitionException {
         constraint_return retval = new constraint_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        or_constr_return or_constr212 = null;
+        or_constr_return or_constr213 = null;
 
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1123:2: ( or_constr )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1123:4: or_constr
+            // src/main/resources/org/drools/lang/DRL.g:1123:2: ( or_constr )
+            // src/main/resources/org/drools/lang/DRL.g:1123:4: or_constr
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_or_constr_in_constraint3735);
-            or_constr212=or_constr();
+            pushFollow(FOLLOW_or_constr_in_constraint3741);
+            or_constr213=or_constr();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, or_constr212.getTree());
+            if ( backtracking==0 ) adaptor.addChild(root_0, or_constr213.getTree());
 
             }
 
@@ -10134,67 +10018,67 @@
     };
 
     // $ANTLR start or_constr
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1126:1: or_constr : and_constr ( DOUBLE_PIPE and_constr )* ;
+    // src/main/resources/org/drools/lang/DRL.g:1126:1: or_constr : and_constr ( DOUBLE_PIPE and_constr )* ;
     public final or_constr_return or_constr() throws RecognitionException {
         or_constr_return retval = new or_constr_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token DOUBLE_PIPE214=null;
-        and_constr_return and_constr213 = null;
+        Token DOUBLE_PIPE215=null;
+        and_constr_return and_constr214 = null;
 
-        and_constr_return and_constr215 = null;
+        and_constr_return and_constr216 = null;
 
 
-        Object DOUBLE_PIPE214_tree=null;
+        Object DOUBLE_PIPE215_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1127:2: ( and_constr ( DOUBLE_PIPE and_constr )* )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1127:4: and_constr ( DOUBLE_PIPE and_constr )*
+            // src/main/resources/org/drools/lang/DRL.g:1127:2: ( and_constr ( DOUBLE_PIPE and_constr )* )
+            // src/main/resources/org/drools/lang/DRL.g:1127:4: and_constr ( DOUBLE_PIPE and_constr )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_and_constr_in_or_constr3746);
-            and_constr213=and_constr();
+            pushFollow(FOLLOW_and_constr_in_or_constr3752);
+            and_constr214=and_constr();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, and_constr213.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1127:15: ( DOUBLE_PIPE and_constr )*
-            loop76:
+            if ( backtracking==0 ) adaptor.addChild(root_0, and_constr214.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:1127:15: ( DOUBLE_PIPE and_constr )*
+            loop77:
             do {
-                int alt76=2;
-                int LA76_0 = input.LA(1);
+                int alt77=2;
+                int LA77_0 = input.LA(1);
 
-                if ( (LA76_0==DOUBLE_PIPE) ) {
-                    alt76=1;
+                if ( (LA77_0==DOUBLE_PIPE) ) {
+                    alt77=1;
                 }
 
 
-                switch (alt76) {
+                switch (alt77) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1127:17: DOUBLE_PIPE and_constr
+            	    // src/main/resources/org/drools/lang/DRL.g:1127:17: DOUBLE_PIPE and_constr
             	    {
-            	    DOUBLE_PIPE214=(Token)input.LT(1);
-            	    match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_constr3750); if (failed) return retval;
+            	    DOUBLE_PIPE215=(Token)input.LT(1);
+            	    match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_constr3756); if (failed) return retval;
             	    if ( backtracking==0 ) {
-            	    DOUBLE_PIPE214_tree = (Object)adaptor.create(DOUBLE_PIPE214);
-            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE214_tree, root_0);
+            	    DOUBLE_PIPE215_tree = (Object)adaptor.create(DOUBLE_PIPE215);
+            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE215_tree, root_0);
             	    }
             	    if ( backtracking==0 ) {
-            	      	emit(DOUBLE_PIPE214, DroolsEditorType.SYMBOL);	
+            	      	emit(DOUBLE_PIPE215, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_and_constr_in_or_constr3757);
-            	    and_constr215=and_constr();
+            	    pushFollow(FOLLOW_and_constr_in_or_constr3763);
+            	    and_constr216=and_constr();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, and_constr215.getTree());
+            	    if ( backtracking==0 ) adaptor.addChild(root_0, and_constr216.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop76;
+            	    break loop77;
                 }
             } while (true);
 
@@ -10224,67 +10108,67 @@
     };
 
     // $ANTLR start and_constr
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1131:1: and_constr : unary_constr ( DOUBLE_AMPER unary_constr )* ;
+    // src/main/resources/org/drools/lang/DRL.g:1131:1: and_constr : unary_constr ( DOUBLE_AMPER unary_constr )* ;
     public final and_constr_return and_constr() throws RecognitionException {
         and_constr_return retval = new and_constr_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token DOUBLE_AMPER217=null;
-        unary_constr_return unary_constr216 = null;
+        Token DOUBLE_AMPER218=null;
+        unary_constr_return unary_constr217 = null;
 
-        unary_constr_return unary_constr218 = null;
+        unary_constr_return unary_constr219 = null;
 
 
-        Object DOUBLE_AMPER217_tree=null;
+        Object DOUBLE_AMPER218_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1132:2: ( unary_constr ( DOUBLE_AMPER unary_constr )* )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1132:4: unary_constr ( DOUBLE_AMPER unary_constr )*
+            // src/main/resources/org/drools/lang/DRL.g:1132:2: ( unary_constr ( DOUBLE_AMPER unary_constr )* )
+            // src/main/resources/org/drools/lang/DRL.g:1132:4: unary_constr ( DOUBLE_AMPER unary_constr )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_unary_constr_in_and_constr3772);
-            unary_constr216=unary_constr();
+            pushFollow(FOLLOW_unary_constr_in_and_constr3778);
+            unary_constr217=unary_constr();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, unary_constr216.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1132:17: ( DOUBLE_AMPER unary_constr )*
-            loop77:
+            if ( backtracking==0 ) adaptor.addChild(root_0, unary_constr217.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:1132:17: ( DOUBLE_AMPER unary_constr )*
+            loop78:
             do {
-                int alt77=2;
-                int LA77_0 = input.LA(1);
+                int alt78=2;
+                int LA78_0 = input.LA(1);
 
-                if ( (LA77_0==DOUBLE_AMPER) ) {
-                    alt77=1;
+                if ( (LA78_0==DOUBLE_AMPER) ) {
+                    alt78=1;
                 }
 
 
-                switch (alt77) {
+                switch (alt78) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1132:19: DOUBLE_AMPER unary_constr
+            	    // src/main/resources/org/drools/lang/DRL.g:1132:19: DOUBLE_AMPER unary_constr
             	    {
-            	    DOUBLE_AMPER217=(Token)input.LT(1);
-            	    match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_constr3776); if (failed) return retval;
+            	    DOUBLE_AMPER218=(Token)input.LT(1);
+            	    match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_constr3782); if (failed) return retval;
             	    if ( backtracking==0 ) {
-            	    DOUBLE_AMPER217_tree = (Object)adaptor.create(DOUBLE_AMPER217);
-            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER217_tree, root_0);
+            	    DOUBLE_AMPER218_tree = (Object)adaptor.create(DOUBLE_AMPER218);
+            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER218_tree, root_0);
             	    }
             	    if ( backtracking==0 ) {
-            	      	emit(DOUBLE_AMPER217, DroolsEditorType.SYMBOL);;	
+            	      	emit(DOUBLE_AMPER218, DroolsEditorType.SYMBOL);;	
             	    }
-            	    pushFollow(FOLLOW_unary_constr_in_and_constr3783);
-            	    unary_constr218=unary_constr();
+            	    pushFollow(FOLLOW_unary_constr_in_and_constr3789);
+            	    unary_constr219=unary_constr();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, unary_constr218.getTree());
+            	    if ( backtracking==0 ) adaptor.addChild(root_0, unary_constr219.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop77;
+            	    break loop78;
                 }
             } while (true);
 
@@ -10314,52 +10198,52 @@
     };
 
     // $ANTLR start unary_constr
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1136:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );
+    // src/main/resources/org/drools/lang/DRL.g:1136:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );
     public final unary_constr_return unary_constr() throws RecognitionException {
         unary_constr_return retval = new unary_constr_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN222=null;
-        Token RIGHT_PAREN224=null;
-        eval_key_return eval_key219 = null;
+        Token LEFT_PAREN223=null;
+        Token RIGHT_PAREN225=null;
+        eval_key_return eval_key220 = null;
 
-        paren_chunk_return paren_chunk220 = null;
+        paren_chunk_return paren_chunk221 = null;
 
-        field_constraint_return field_constraint221 = null;
+        field_constraint_return field_constraint222 = null;
 
-        or_constr_return or_constr223 = null;
+        or_constr_return or_constr224 = null;
 
 
-        Object LEFT_PAREN222_tree=null;
-        Object RIGHT_PAREN224_tree=null;
+        Object LEFT_PAREN223_tree=null;
+        Object RIGHT_PAREN225_tree=null;
 
          boolean isFailed = true;	
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1140:2: ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN )
-            int alt78=3;
-            int LA78_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:1140:2: ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN )
+            int alt79=3;
+            int LA79_0 = input.LA(1);
 
-            if ( (LA78_0==ID) ) {
-                int LA78_1 = input.LA(2);
+            if ( (LA79_0==ID) ) {
+                int LA79_1 = input.LA(2);
 
-                if ( ((LA78_1>=ID && LA78_1<=DOT)||LA78_1==COLON||(LA78_1>=EQUAL && LA78_1<=GRAVE_ACCENT)||LA78_1==LEFT_SQUARE) ) {
-                    alt78=2;
+                if ( ((LA79_1>=ID && LA79_1<=DOT)||LA79_1==COLON||(LA79_1>=EQUAL && LA79_1<=GRAVE_ACCENT)||LA79_1==LEFT_SQUARE) ) {
+                    alt79=2;
                 }
-                else if ( (LA78_1==LEFT_PAREN) ) {
-                    int LA78_14 = input.LA(3);
+                else if ( (LA79_1==LEFT_PAREN) ) {
+                    int LA79_4 = input.LA(3);
 
                     if ( ((validateIdentifierKey(DroolsSoftKeywords.EVAL))) ) {
-                        alt78=1;
+                        alt79=1;
                     }
                     else if ( (true) ) {
-                        alt78=2;
+                        alt79=2;
                     }
                     else {
                         if (backtracking>0) {failed=true; return retval;}
                         NoViableAltException nvae =
-                            new NoViableAltException("1136:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );", 78, 14, input);
+                            new NoViableAltException("1136:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );", 79, 4, input);
 
                         throw nvae;
                     }
@@ -10367,76 +10251,76 @@
                 else {
                     if (backtracking>0) {failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1136:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );", 78, 1, input);
+                        new NoViableAltException("1136:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );", 79, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA78_0==LEFT_PAREN) ) {
-                alt78=3;
+            else if ( (LA79_0==LEFT_PAREN) ) {
+                alt79=3;
             }
             else {
                 if (backtracking>0) {failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1136:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );", 78, 0, input);
+                    new NoViableAltException("1136:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );", 79, 0, input);
 
                 throw nvae;
             }
-            switch (alt78) {
+            switch (alt79) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1140:4: eval_key paren_chunk
+                    // src/main/resources/org/drools/lang/DRL.g:1140:4: eval_key paren_chunk
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_eval_key_in_unary_constr3816);
-                    eval_key219=eval_key();
+                    pushFollow(FOLLOW_eval_key_in_unary_constr3822);
+                    eval_key220=eval_key();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(eval_key219.getTree(), root_0);
-                    pushFollow(FOLLOW_paren_chunk_in_unary_constr3819);
-                    paren_chunk220=paren_chunk();
+                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(eval_key220.getTree(), root_0);
+                    pushFollow(FOLLOW_paren_chunk_in_unary_constr3825);
+                    paren_chunk221=paren_chunk();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, paren_chunk220.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, paren_chunk221.getTree());
 
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1141:4: field_constraint
+                    // src/main/resources/org/drools/lang/DRL.g:1141:4: field_constraint
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_field_constraint_in_unary_constr3824);
-                    field_constraint221=field_constraint();
+                    pushFollow(FOLLOW_field_constraint_in_unary_constr3830);
+                    field_constraint222=field_constraint();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, field_constraint221.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, field_constraint222.getTree());
 
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1142:5: LEFT_PAREN or_constr RIGHT_PAREN
+                    // src/main/resources/org/drools/lang/DRL.g:1142:5: LEFT_PAREN or_constr RIGHT_PAREN
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    LEFT_PAREN222=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_unary_constr3830); if (failed) return retval;
+                    LEFT_PAREN223=(Token)input.LT(1);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_unary_constr3836); if (failed) return retval;
                     if ( backtracking==0 ) {
-                      	emit(LEFT_PAREN222, DroolsEditorType.SYMBOL);	
+                      	emit(LEFT_PAREN223, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_or_constr_in_unary_constr3840);
-                    or_constr223=or_constr();
+                    pushFollow(FOLLOW_or_constr_in_unary_constr3846);
+                    or_constr224=or_constr();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, or_constr223.getTree());
-                    RIGHT_PAREN224=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_unary_constr3845); if (failed) return retval;
+                    if ( backtracking==0 ) adaptor.addChild(root_0, or_constr224.getTree());
+                    RIGHT_PAREN225=(Token)input.LT(1);
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_unary_constr3851); if (failed) return retval;
                     if ( backtracking==0 ) {
-                    RIGHT_PAREN224_tree = (Object)adaptor.create(RIGHT_PAREN224);
-                    adaptor.addChild(root_0, RIGHT_PAREN224_tree);
+                    RIGHT_PAREN225_tree = (Object)adaptor.create(RIGHT_PAREN225);
+                    adaptor.addChild(root_0, RIGHT_PAREN225_tree);
                     }
                     if ( backtracking==0 ) {
-                      	emit(RIGHT_PAREN224, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN225, DroolsEditorType.SYMBOL);	
                     }
 
                     }
@@ -10477,7 +10361,7 @@
     };
 
     // $ANTLR start field_constraint
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1155:1: field_constraint : ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) );
+    // src/main/resources/org/drools/lang/DRL.g:1155:1: field_constraint : ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) );
     public final field_constraint_return field_constraint() throws RecognitionException {
         field_constraint_return retval = new field_constraint_return();
         retval.start = input.LT(1);
@@ -10485,46 +10369,46 @@
         Object root_0 = null;
 
         Token arw=null;
-        label_return label225 = null;
+        label_return label226 = null;
 
-        accessor_path_return accessor_path226 = null;
+        accessor_path_return accessor_path227 = null;
 
-        or_restr_connective_return or_restr_connective227 = null;
+        or_restr_connective_return or_restr_connective228 = null;
 
-        paren_chunk_return paren_chunk228 = null;
+        paren_chunk_return paren_chunk229 = null;
 
-        accessor_path_return accessor_path229 = null;
+        accessor_path_return accessor_path230 = null;
 
-        or_restr_connective_return or_restr_connective230 = null;
+        or_restr_connective_return or_restr_connective231 = null;
 
 
         Object arw_tree=null;
         RewriteRuleTokenStream stream_ARROW=new RewriteRuleTokenStream(adaptor,"token ARROW");
-        RewriteRuleSubtreeStream stream_accessor_path=new RewriteRuleSubtreeStream(adaptor,"rule accessor_path");
-        RewriteRuleSubtreeStream stream_label=new RewriteRuleSubtreeStream(adaptor,"rule label");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         RewriteRuleSubtreeStream stream_or_restr_connective=new RewriteRuleSubtreeStream(adaptor,"rule or_restr_connective");
+        RewriteRuleSubtreeStream stream_label=new RewriteRuleSubtreeStream(adaptor,"rule label");
+        RewriteRuleSubtreeStream stream_accessor_path=new RewriteRuleSubtreeStream(adaptor,"rule accessor_path");
 
         	boolean isArrow = false;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1158:3: ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) )
-            int alt80=2;
-            int LA80_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:1158:3: ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) )
+            int alt81=2;
+            int LA81_0 = input.LA(1);
 
-            if ( (LA80_0==ID) ) {
-                int LA80_1 = input.LA(2);
+            if ( (LA81_0==ID) ) {
+                int LA81_1 = input.LA(2);
 
-                if ( (LA80_1==COLON) ) {
-                    alt80=1;
+                if ( (LA81_1==COLON) ) {
+                    alt81=1;
                 }
-                else if ( ((LA80_1>=ID && LA80_1<=DOT)||LA80_1==LEFT_PAREN||(LA80_1>=EQUAL && LA80_1<=GRAVE_ACCENT)||LA80_1==LEFT_SQUARE) ) {
-                    alt80=2;
+                else if ( ((LA81_1>=ID && LA81_1<=DOT)||LA81_1==LEFT_PAREN||(LA81_1>=EQUAL && LA81_1<=GRAVE_ACCENT)||LA81_1==LEFT_SQUARE) ) {
+                    alt81=2;
                 }
                 else {
                     if (backtracking>0) {failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1155:1: field_constraint : ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) );", 80, 1, input);
+                        new NoViableAltException("1155:1: field_constraint : ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) );", 81, 1, input);
 
                     throw nvae;
                 }
@@ -10532,61 +10416,61 @@
             else {
                 if (backtracking>0) {failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1155:1: field_constraint : ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) );", 80, 0, input);
+                    new NoViableAltException("1155:1: field_constraint : ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) );", 81, 0, input);
 
                 throw nvae;
             }
-            switch (alt80) {
+            switch (alt81) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1158:5: label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )?
+                    // src/main/resources/org/drools/lang/DRL.g:1158:5: label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )?
                     {
-                    pushFollow(FOLLOW_label_in_field_constraint3865);
-                    label225=label();
+                    pushFollow(FOLLOW_label_in_field_constraint3871);
+                    label226=label();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_label.add(label225.getTree());
-                    pushFollow(FOLLOW_accessor_path_in_field_constraint3867);
-                    accessor_path226=accessor_path();
+                    if ( backtracking==0 ) stream_label.add(label226.getTree());
+                    pushFollow(FOLLOW_accessor_path_in_field_constraint3873);
+                    accessor_path227=accessor_path();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_accessor_path.add(accessor_path226.getTree());
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1159:3: ( or_restr_connective | arw= ARROW paren_chunk )?
-                    int alt79=3;
-                    int LA79_0 = input.LA(1);
+                    if ( backtracking==0 ) stream_accessor_path.add(accessor_path227.getTree());
+                    // src/main/resources/org/drools/lang/DRL.g:1159:3: ( or_restr_connective | arw= ARROW paren_chunk )?
+                    int alt80=3;
+                    int LA80_0 = input.LA(1);
 
-                    if ( (LA79_0==ID||LA79_0==LEFT_PAREN||(LA79_0>=EQUAL && LA79_0<=GRAVE_ACCENT)) ) {
-                        alt79=1;
+                    if ( (LA80_0==ID||LA80_0==LEFT_PAREN||(LA80_0>=EQUAL && LA80_0<=GRAVE_ACCENT)) ) {
+                        alt80=1;
                     }
-                    else if ( (LA79_0==ARROW) ) {
-                        alt79=2;
+                    else if ( (LA80_0==ARROW) ) {
+                        alt80=2;
                     }
-                    switch (alt79) {
+                    switch (alt80) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1159:5: or_restr_connective
+                            // src/main/resources/org/drools/lang/DRL.g:1159:5: or_restr_connective
                             {
-                            pushFollow(FOLLOW_or_restr_connective_in_field_constraint3874);
-                            or_restr_connective227=or_restr_connective();
+                            pushFollow(FOLLOW_or_restr_connective_in_field_constraint3880);
+                            or_restr_connective228=or_restr_connective();
                             _fsp--;
                             if (failed) return retval;
-                            if ( backtracking==0 ) stream_or_restr_connective.add(or_restr_connective227.getTree());
+                            if ( backtracking==0 ) stream_or_restr_connective.add(or_restr_connective228.getTree());
 
                             }
                             break;
                         case 2 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1159:27: arw= ARROW paren_chunk
+                            // src/main/resources/org/drools/lang/DRL.g:1159:27: arw= ARROW paren_chunk
                             {
                             arw=(Token)input.LT(1);
-                            match(input,ARROW,FOLLOW_ARROW_in_field_constraint3880); if (failed) return retval;
+                            match(input,ARROW,FOLLOW_ARROW_in_field_constraint3886); if (failed) return retval;
                             if ( backtracking==0 ) stream_ARROW.add(arw);
 
                             if ( backtracking==0 ) {
                               	emit(arw, DroolsEditorType.SYMBOL);	
                             }
-                            pushFollow(FOLLOW_paren_chunk_in_field_constraint3884);
-                            paren_chunk228=paren_chunk();
+                            pushFollow(FOLLOW_paren_chunk_in_field_constraint3890);
+                            paren_chunk229=paren_chunk();
                             _fsp--;
                             if (failed) return retval;
-                            if ( backtracking==0 ) stream_paren_chunk.add(paren_chunk228.getTree());
+                            if ( backtracking==0 ) stream_paren_chunk.add(paren_chunk229.getTree());
                             if ( backtracking==0 ) {
                               isArrow = true;
                             }
@@ -10598,7 +10482,7 @@
 
 
                     // AST REWRITE
-                    // elements: or_restr_connective, paren_chunk, accessor_path, accessor_path, label, label
+                    // elements: accessor_path, paren_chunk, or_restr_connective, label, accessor_path, label
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -10610,13 +10494,13 @@
                     root_0 = (Object)adaptor.nil();
                     // 1160:3: -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )?
                     if (isArrow) {
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1160:17: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) )
+                        // src/main/resources/org/drools/lang/DRL.g:1160:17: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_BIND_FIELD, "VT_BIND_FIELD"), root_1);
 
                         adaptor.addChild(root_1, stream_label.next());
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1160:39: ^( VT_FIELD accessor_path )
+                        // src/main/resources/org/drools/lang/DRL.g:1160:39: ^( VT_FIELD accessor_path )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_FIELD, "VT_FIELD"), root_2);
@@ -10628,9 +10512,9 @@
 
                         adaptor.addChild(root_0, root_1);
                         }
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1160:66: ( ^( VK_EVAL[$arw] paren_chunk ) )?
+                        // src/main/resources/org/drools/lang/DRL.g:1160:66: ( ^( VK_EVAL[$arw] paren_chunk ) )?
                         if ( stream_paren_chunk.hasNext() ) {
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1160:66: ^( VK_EVAL[$arw] paren_chunk )
+                            // src/main/resources/org/drools/lang/DRL.g:1160:66: ^( VK_EVAL[$arw] paren_chunk )
                             {
                             Object root_1 = (Object)adaptor.nil();
                             root_1 = (Object)adaptor.becomeRoot(adaptor.create(VK_EVAL, arw), root_1);
@@ -10646,19 +10530,19 @@
                     }
                     else // 1161:3: -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
                     {
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1161:6: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
+                        // src/main/resources/org/drools/lang/DRL.g:1161:6: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_BIND_FIELD, "VT_BIND_FIELD"), root_1);
 
                         adaptor.addChild(root_1, stream_label.next());
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1161:28: ^( VT_FIELD accessor_path ( or_restr_connective )? )
+                        // src/main/resources/org/drools/lang/DRL.g:1161:28: ^( VT_FIELD accessor_path ( or_restr_connective )? )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(VT_FIELD, "VT_FIELD"), root_2);
 
                         adaptor.addChild(root_2, stream_accessor_path.next());
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1161:53: ( or_restr_connective )?
+                        // src/main/resources/org/drools/lang/DRL.g:1161:53: ( or_restr_connective )?
                         if ( stream_or_restr_connective.hasNext() ) {
                             adaptor.addChild(root_2, stream_or_restr_connective.next());
 
@@ -10678,21 +10562,21 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1162:4: accessor_path or_restr_connective
+                    // src/main/resources/org/drools/lang/DRL.g:1162:4: accessor_path or_restr_connective
                     {
-                    pushFollow(FOLLOW_accessor_path_in_field_constraint3938);
-                    accessor_path229=accessor_path();
+                    pushFollow(FOLLOW_accessor_path_in_field_constraint3944);
+                    accessor_path230=accessor_path();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_accessor_path.add(accessor_path229.getTree());
-                    pushFollow(FOLLOW_or_restr_connective_in_field_constraint3940);
-                    or_restr_connective230=or_restr_connective();
+                    if ( backtracking==0 ) stream_accessor_path.add(accessor_path230.getTree());
+                    pushFollow(FOLLOW_or_restr_connective_in_field_constraint3946);
+                    or_restr_connective231=or_restr_connective();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) stream_or_restr_connective.add(or_restr_connective230.getTree());
+                    if ( backtracking==0 ) stream_or_restr_connective.add(or_restr_connective231.getTree());
 
                     // AST REWRITE
-                    // elements: or_restr_connective, accessor_path
+                    // elements: accessor_path, or_restr_connective
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -10704,7 +10588,7 @@
                     root_0 = (Object)adaptor.nil();
                     // 1163:3: -> ^( VT_FIELD accessor_path or_restr_connective )
                     {
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1163:6: ^( VT_FIELD accessor_path or_restr_connective )
+                        // src/main/resources/org/drools/lang/DRL.g:1163:6: ^( VT_FIELD accessor_path or_restr_connective )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_FIELD, "VT_FIELD"), root_1);
@@ -10746,7 +10630,7 @@
     };
 
     // $ANTLR start label
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1166:1: label : value= ID COLON -> VT_LABEL[$value] ;
+    // src/main/resources/org/drools/lang/DRL.g:1166:1: label : value= ID COLON -> VT_LABEL[$value] ;
     public final label_return label() throws RecognitionException {
         label_return retval = new label_return();
         retval.start = input.LT(1);
@@ -10754,30 +10638,30 @@
         Object root_0 = null;
 
         Token value=null;
-        Token COLON231=null;
+        Token COLON232=null;
 
         Object value_tree=null;
-        Object COLON231_tree=null;
+        Object COLON232_tree=null;
         RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1167:2: (value= ID COLON -> VT_LABEL[$value] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1167:4: value= ID COLON
+            // src/main/resources/org/drools/lang/DRL.g:1167:2: (value= ID COLON -> VT_LABEL[$value] )
+            // src/main/resources/org/drools/lang/DRL.g:1167:4: value= ID COLON
             {
             value=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_label3965); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_label3971); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(value);
 
             if ( backtracking==0 ) {
               	emit(value, DroolsEditorType.IDENTIFIER_VARIABLE);	
             }
-            COLON231=(Token)input.LT(1);
-            match(input,COLON,FOLLOW_COLON_in_label3972); if (failed) return retval;
-            if ( backtracking==0 ) stream_COLON.add(COLON231);
+            COLON232=(Token)input.LT(1);
+            match(input,COLON,FOLLOW_COLON_in_label3978); if (failed) return retval;
+            if ( backtracking==0 ) stream_COLON.add(COLON232);
 
             if ( backtracking==0 ) {
-              	emit(COLON231, DroolsEditorType.SYMBOL);	
+              	emit(COLON232, DroolsEditorType.SYMBOL);	
             }
 
             // AST REWRITE
@@ -10824,65 +10708,65 @@
     };
 
     // $ANTLR start or_restr_connective
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1172:1: or_restr_connective : and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* ;
+    // src/main/resources/org/drools/lang/DRL.g:1172:1: or_restr_connective : and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* ;
     public final or_restr_connective_return or_restr_connective() throws RecognitionException {
         or_restr_connective_return retval = new or_restr_connective_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token DOUBLE_PIPE233=null;
-        and_restr_connective_return and_restr_connective232 = null;
+        Token DOUBLE_PIPE234=null;
+        and_restr_connective_return and_restr_connective233 = null;
 
-        and_restr_connective_return and_restr_connective234 = null;
+        and_restr_connective_return and_restr_connective235 = null;
 
 
-        Object DOUBLE_PIPE233_tree=null;
+        Object DOUBLE_PIPE234_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1173:2: ( and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1173:4: and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )*
+            // src/main/resources/org/drools/lang/DRL.g:1173:2: ( and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* )
+            // src/main/resources/org/drools/lang/DRL.g:1173:4: and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective3993);
-            and_restr_connective232=and_restr_connective();
+            pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective3999);
+            and_restr_connective233=and_restr_connective();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, and_restr_connective232.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1173:25: ({...}? => DOUBLE_PIPE and_restr_connective )*
-            loop81:
+            if ( backtracking==0 ) adaptor.addChild(root_0, and_restr_connective233.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:1173:25: ({...}? => DOUBLE_PIPE and_restr_connective )*
+            loop82:
             do {
-                int alt81=2;
-                alt81 = dfa81.predict(input);
-                switch (alt81) {
+                int alt82=2;
+                alt82 = dfa82.predict(input);
+                switch (alt82) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1173:26: {...}? => DOUBLE_PIPE and_restr_connective
+            	    // src/main/resources/org/drools/lang/DRL.g:1173:26: {...}? => DOUBLE_PIPE and_restr_connective
             	    {
             	    if ( !((validateRestr())) ) {
             	        if (backtracking>0) {failed=true; return retval;}
             	        throw new FailedPredicateException(input, "or_restr_connective", "(validateRestr())");
             	    }
-            	    DOUBLE_PIPE233=(Token)input.LT(1);
-            	    match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_restr_connective3999); if (failed) return retval;
+            	    DOUBLE_PIPE234=(Token)input.LT(1);
+            	    match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_restr_connective4005); if (failed) return retval;
             	    if ( backtracking==0 ) {
-            	    DOUBLE_PIPE233_tree = (Object)adaptor.create(DOUBLE_PIPE233);
-            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE233_tree, root_0);
+            	    DOUBLE_PIPE234_tree = (Object)adaptor.create(DOUBLE_PIPE234);
+            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE234_tree, root_0);
             	    }
             	    if ( backtracking==0 ) {
-            	      	emit(DOUBLE_PIPE233, DroolsEditorType.SYMBOL);	
+            	      	emit(DOUBLE_PIPE234, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective4007);
-            	    and_restr_connective234=and_restr_connective();
+            	    pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective4013);
+            	    and_restr_connective235=and_restr_connective();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, and_restr_connective234.getTree());
+            	    if ( backtracking==0 ) adaptor.addChild(root_0, and_restr_connective235.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop81;
+            	    break loop82;
                 }
             } while (true);
 
@@ -10912,65 +10796,65 @@
     };
 
     // $ANTLR start and_restr_connective
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1177:1: and_restr_connective : constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* ;
+    // src/main/resources/org/drools/lang/DRL.g:1177:1: and_restr_connective : constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* ;
     public final and_restr_connective_return and_restr_connective() throws RecognitionException {
         and_restr_connective_return retval = new and_restr_connective_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token DOUBLE_AMPER236=null;
-        constraint_expression_return constraint_expression235 = null;
+        Token DOUBLE_AMPER237=null;
+        constraint_expression_return constraint_expression236 = null;
 
-        constraint_expression_return constraint_expression237 = null;
+        constraint_expression_return constraint_expression238 = null;
 
 
-        Object DOUBLE_AMPER236_tree=null;
+        Object DOUBLE_AMPER237_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1178:2: ( constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1178:4: constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )*
+            // src/main/resources/org/drools/lang/DRL.g:1178:2: ( constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* )
+            // src/main/resources/org/drools/lang/DRL.g:1178:4: constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_constraint_expression_in_and_restr_connective4022);
-            constraint_expression235=constraint_expression();
+            pushFollow(FOLLOW_constraint_expression_in_and_restr_connective4028);
+            constraint_expression236=constraint_expression();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, constraint_expression235.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1178:26: ({...}? => DOUBLE_AMPER constraint_expression )*
-            loop82:
+            if ( backtracking==0 ) adaptor.addChild(root_0, constraint_expression236.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:1178:26: ({...}? => DOUBLE_AMPER constraint_expression )*
+            loop83:
             do {
-                int alt82=2;
-                alt82 = dfa82.predict(input);
-                switch (alt82) {
+                int alt83=2;
+                alt83 = dfa83.predict(input);
+                switch (alt83) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1178:27: {...}? => DOUBLE_AMPER constraint_expression
+            	    // src/main/resources/org/drools/lang/DRL.g:1178:27: {...}? => DOUBLE_AMPER constraint_expression
             	    {
             	    if ( !((validateRestr())) ) {
             	        if (backtracking>0) {failed=true; return retval;}
             	        throw new FailedPredicateException(input, "and_restr_connective", "(validateRestr())");
             	    }
-            	    DOUBLE_AMPER236=(Token)input.LT(1);
-            	    match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_restr_connective4028); if (failed) return retval;
+            	    DOUBLE_AMPER237=(Token)input.LT(1);
+            	    match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_restr_connective4034); if (failed) return retval;
             	    if ( backtracking==0 ) {
-            	    DOUBLE_AMPER236_tree = (Object)adaptor.create(DOUBLE_AMPER236);
-            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER236_tree, root_0);
+            	    DOUBLE_AMPER237_tree = (Object)adaptor.create(DOUBLE_AMPER237);
+            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER237_tree, root_0);
             	    }
             	    if ( backtracking==0 ) {
-            	      	emit(DOUBLE_AMPER236, DroolsEditorType.SYMBOL);	
+            	      	emit(DOUBLE_AMPER237, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_constraint_expression_in_and_restr_connective4035);
-            	    constraint_expression237=constraint_expression();
+            	    pushFollow(FOLLOW_constraint_expression_in_and_restr_connective4041);
+            	    constraint_expression238=constraint_expression();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, constraint_expression237.getTree());
+            	    if ( backtracking==0 ) adaptor.addChild(root_0, constraint_expression238.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop82;
+            	    break loop83;
                 }
             } while (true);
 
@@ -11000,86 +10884,86 @@
     };
 
     // $ANTLR start constraint_expression
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );
+    // src/main/resources/org/drools/lang/DRL.g:1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );
     public final constraint_expression_return constraint_expression() throws RecognitionException {
         constraint_expression_return retval = new constraint_expression_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN240=null;
-        Token RIGHT_PAREN242=null;
-        compound_operator_return compound_operator238 = null;
+        Token LEFT_PAREN241=null;
+        Token RIGHT_PAREN243=null;
+        compound_operator_return compound_operator239 = null;
 
-        simple_operator_return simple_operator239 = null;
+        simple_operator_return simple_operator240 = null;
 
-        or_restr_connective_return or_restr_connective241 = null;
+        or_restr_connective_return or_restr_connective242 = null;
 
 
-        Object LEFT_PAREN240_tree=null;
-        Object RIGHT_PAREN242_tree=null;
+        Object LEFT_PAREN241_tree=null;
+        Object RIGHT_PAREN243_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1185:3: ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN )
-            int alt83=3;
+            // src/main/resources/org/drools/lang/DRL.g:1185:3: ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN )
+            int alt84=3;
             switch ( input.LA(1) ) {
             case ID:
                 {
-                int LA83_1 = input.LA(2);
+                int LA84_1 = input.LA(2);
 
-                if ( (LA83_1==ID) ) {
-                    int LA83_10 = input.LA(3);
+                if ( (LA84_1==ID) ) {
+                    int LA84_10 = input.LA(3);
 
-                    if ( (LA83_10==ID||LA83_10==STRING||(LA83_10>=BOOL && LA83_10<=INT)||(LA83_10>=FLOAT && LA83_10<=NULL)) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
-                        alt83=2;
+                    if ( (LA84_10==ID||LA84_10==STRING||(LA84_10>=BOOL && LA84_10<=INT)||(LA84_10>=FLOAT && LA84_10<=NULL)) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
+                        alt84=2;
                     }
-                    else if ( (LA83_10==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
-                        int LA83_24 = input.LA(4);
+                    else if ( (LA84_10==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
+                        int LA84_24 = input.LA(4);
 
                         if ( ((validateIdentifierKey(DroolsSoftKeywords.NOT))) ) {
-                            alt83=1;
+                            alt84=1;
                         }
                         else if ( ((validateIdentifierKey(DroolsSoftKeywords.NOT))) ) {
-                            alt83=2;
+                            alt84=2;
                         }
                         else {
                             if (backtracking>0) {failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 83, 24, input);
+                                new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 84, 24, input);
 
                             throw nvae;
                         }
                     }
-                    else if ( (LA83_10==DOT||(LA83_10>=COMMA && LA83_10<=RIGHT_PAREN)||(LA83_10>=DOUBLE_PIPE && LA83_10<=DOUBLE_AMPER)||LA83_10==LEFT_SQUARE) ) {
-                        alt83=2;
+                    else if ( (LA84_10==DOT||(LA84_10>=COMMA && LA84_10<=RIGHT_PAREN)||(LA84_10>=DOUBLE_PIPE && LA84_10<=DOUBLE_AMPER)||LA84_10==LEFT_SQUARE) ) {
+                        alt84=2;
                     }
                     else {
                         if (backtracking>0) {failed=true; return retval;}
                         NoViableAltException nvae =
-                            new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 83, 10, input);
+                            new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 84, 10, input);
 
                         throw nvae;
                     }
                 }
-                else if ( (LA83_1==STRING||(LA83_1>=BOOL && LA83_1<=INT)||(LA83_1>=FLOAT && LA83_1<=NULL)) ) {
-                    alt83=2;
+                else if ( (LA84_1==STRING||(LA84_1>=BOOL && LA84_1<=INT)||(LA84_1>=FLOAT && LA84_1<=NULL)) ) {
+                    alt84=2;
                 }
-                else if ( (LA83_1==LEFT_PAREN) ) {
+                else if ( (LA84_1==LEFT_PAREN) ) {
                     switch ( input.LA(3) ) {
                     case ID:
                         {
-                        int LA83_31 = input.LA(4);
+                        int LA84_31 = input.LA(4);
 
                         if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                            alt83=1;
+                            alt84=1;
                         }
                         else if ( (true) ) {
-                            alt83=2;
+                            alt84=2;
                         }
                         else {
                             if (backtracking>0) {failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 83, 31, input);
+                                new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 84, 31, input);
 
                             throw nvae;
                         }
@@ -11087,18 +10971,18 @@
                         break;
                     case LEFT_PAREN:
                         {
-                        int LA83_32 = input.LA(4);
+                        int LA84_32 = input.LA(4);
 
                         if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                            alt83=1;
+                            alt84=1;
                         }
                         else if ( (true) ) {
-                            alt83=2;
+                            alt84=2;
                         }
                         else {
                             if (backtracking>0) {failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 83, 32, input);
+                                new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 84, 32, input);
 
                             throw nvae;
                         }
@@ -11223,23 +11107,23 @@
                     case C_STYLE_SINGLE_LINE_COMMENT:
                     case MULTI_LINE_COMMENT:
                         {
-                        alt83=2;
+                        alt84=2;
                         }
                         break;
                     case STRING:
                         {
-                        int LA83_34 = input.LA(4);
+                        int LA84_34 = input.LA(4);
 
                         if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                            alt83=1;
+                            alt84=1;
                         }
                         else if ( (true) ) {
-                            alt83=2;
+                            alt84=2;
                         }
                         else {
                             if (backtracking>0) {failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 83, 34, input);
+                                new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 84, 34, input);
 
                             throw nvae;
                         }
@@ -11247,18 +11131,18 @@
                         break;
                     case INT:
                         {
-                        int LA83_35 = input.LA(4);
+                        int LA84_35 = input.LA(4);
 
                         if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                            alt83=1;
+                            alt84=1;
                         }
                         else if ( (true) ) {
-                            alt83=2;
+                            alt84=2;
                         }
                         else {
                             if (backtracking>0) {failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 83, 35, input);
+                                new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 84, 35, input);
 
                             throw nvae;
                         }
@@ -11266,18 +11150,18 @@
                         break;
                     case FLOAT:
                         {
-                        int LA83_36 = input.LA(4);
+                        int LA84_36 = input.LA(4);
 
                         if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                            alt83=1;
+                            alt84=1;
                         }
                         else if ( (true) ) {
-                            alt83=2;
+                            alt84=2;
                         }
                         else {
                             if (backtracking>0) {failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 83, 36, input);
+                                new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 84, 36, input);
 
                             throw nvae;
                         }
@@ -11285,18 +11169,18 @@
                         break;
                     case BOOL:
                         {
-                        int LA83_37 = input.LA(4);
+                        int LA84_37 = input.LA(4);
 
                         if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                            alt83=1;
+                            alt84=1;
                         }
                         else if ( (true) ) {
-                            alt83=2;
+                            alt84=2;
                         }
                         else {
                             if (backtracking>0) {failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 83, 37, input);
+                                new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 84, 37, input);
 
                             throw nvae;
                         }
@@ -11304,18 +11188,18 @@
                         break;
                     case NULL:
                         {
-                        int LA83_38 = input.LA(4);
+                        int LA84_38 = input.LA(4);
 
                         if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                            alt83=1;
+                            alt84=1;
                         }
                         else if ( (true) ) {
-                            alt83=2;
+                            alt84=2;
                         }
                         else {
                             if (backtracking>0) {failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 83, 38, input);
+                                new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 84, 38, input);
 
                             throw nvae;
                         }
@@ -11324,19 +11208,19 @@
                     default:
                         if (backtracking>0) {failed=true; return retval;}
                         NoViableAltException nvae =
-                            new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 83, 16, input);
+                            new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 84, 16, input);
 
                         throw nvae;
                     }
 
                 }
-                else if ( (LA83_1==GRAVE_ACCENT) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
-                    alt83=2;
+                else if ( (LA84_1==GRAVE_ACCENT) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
+                    alt84=2;
                 }
                 else {
                     if (backtracking>0) {failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 83, 1, input);
+                        new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 84, 1, input);
 
                     throw nvae;
                 }
@@ -11350,72 +11234,72 @@
             case NOT_EQUAL:
             case GRAVE_ACCENT:
                 {
-                alt83=2;
+                alt84=2;
                 }
                 break;
             case LEFT_PAREN:
                 {
-                alt83=3;
+                alt84=3;
                 }
                 break;
             default:
                 if (backtracking>0) {failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 83, 0, input);
+                    new NoViableAltException("1182:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 84, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt83) {
+            switch (alt84) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1185:5: compound_operator
+                    // src/main/resources/org/drools/lang/DRL.g:1185:5: compound_operator
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_compound_operator_in_constraint_expression4057);
-                    compound_operator238=compound_operator();
+                    pushFollow(FOLLOW_compound_operator_in_constraint_expression4063);
+                    compound_operator239=compound_operator();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, compound_operator238.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, compound_operator239.getTree());
 
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1186:4: simple_operator
+                    // src/main/resources/org/drools/lang/DRL.g:1186:4: simple_operator
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_simple_operator_in_constraint_expression4062);
-                    simple_operator239=simple_operator();
+                    pushFollow(FOLLOW_simple_operator_in_constraint_expression4068);
+                    simple_operator240=simple_operator();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, simple_operator239.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, simple_operator240.getTree());
 
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1187:4: LEFT_PAREN or_restr_connective RIGHT_PAREN
+                    // src/main/resources/org/drools/lang/DRL.g:1187:4: LEFT_PAREN or_restr_connective RIGHT_PAREN
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    LEFT_PAREN240=(Token)input.LT(1);
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constraint_expression4067); if (failed) return retval;
+                    LEFT_PAREN241=(Token)input.LT(1);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constraint_expression4073); if (failed) return retval;
                     if ( backtracking==0 ) {
-                      	emit(LEFT_PAREN240, DroolsEditorType.SYMBOL);	
+                      	emit(LEFT_PAREN241, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_or_restr_connective_in_constraint_expression4076);
-                    or_restr_connective241=or_restr_connective();
+                    pushFollow(FOLLOW_or_restr_connective_in_constraint_expression4082);
+                    or_restr_connective242=or_restr_connective();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, or_restr_connective241.getTree());
-                    RIGHT_PAREN242=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constraint_expression4081); if (failed) return retval;
+                    if ( backtracking==0 ) adaptor.addChild(root_0, or_restr_connective242.getTree());
+                    RIGHT_PAREN243=(Token)input.LT(1);
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constraint_expression4087); if (failed) return retval;
                     if ( backtracking==0 ) {
-                    RIGHT_PAREN242_tree = (Object)adaptor.create(RIGHT_PAREN242);
-                    adaptor.addChild(root_0, RIGHT_PAREN242_tree);
+                    RIGHT_PAREN243_tree = (Object)adaptor.create(RIGHT_PAREN243);
+                    adaptor.addChild(root_0, RIGHT_PAREN243_tree);
                     }
                     if ( backtracking==0 ) {
-                      	emit(RIGHT_PAREN242, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN243, DroolsEditorType.SYMBOL);	
                     }
 
                     }
@@ -11483,7 +11367,7 @@
     };
 
     // $ANTLR start simple_operator
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1232:1: simple_operator : ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= GRAVE_ACCENT id2= ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | id3= ID | ga2= GRAVE_ACCENT id4= ID square_chunk ) expression_value ;
+    // src/main/resources/org/drools/lang/DRL.g:1232:1: simple_operator : ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= GRAVE_ACCENT id2= ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | id3= ID | ga2= GRAVE_ACCENT id4= 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);
@@ -11496,37 +11380,37 @@
         Token id3=null;
         Token ga2=null;
         Token id4=null;
-        Token EQUAL243=null;
-        Token GREATER244=null;
-        Token GREATER_EQUAL245=null;
-        Token LESS246=null;
-        Token LESS_EQUAL247=null;
-        Token NOT_EQUAL248=null;
-        not_key_return not_key249 = null;
+        Token EQUAL244=null;
+        Token GREATER245=null;
+        Token GREATER_EQUAL246=null;
+        Token LESS247=null;
+        Token LESS_EQUAL248=null;
+        Token NOT_EQUAL249=null;
+        not_key_return not_key250 = null;
 
-        contains_key_return contains_key250 = null;
+        contains_key_return contains_key251 = null;
 
-        soundslike_key_return soundslike_key251 = null;
+        soundslike_key_return soundslike_key252 = null;
 
-        matches_key_return matches_key252 = null;
+        matches_key_return matches_key253 = null;
 
-        memberof_key_return memberof_key253 = null;
+        memberof_key_return memberof_key254 = null;
 
-        square_chunk_return square_chunk254 = null;
+        square_chunk_return square_chunk255 = null;
 
-        contains_key_return contains_key255 = null;
+        contains_key_return contains_key256 = null;
 
-        excludes_key_return excludes_key256 = null;
+        excludes_key_return excludes_key257 = null;
 
-        matches_key_return matches_key257 = null;
+        matches_key_return matches_key258 = null;
 
-        soundslike_key_return soundslike_key258 = null;
+        soundslike_key_return soundslike_key259 = null;
 
-        memberof_key_return memberof_key259 = null;
+        memberof_key_return memberof_key260 = null;
 
-        square_chunk_return square_chunk260 = null;
+        square_chunk_return square_chunk261 = null;
 
-        expression_value_return expression_value261 = null;
+        expression_value_return expression_value262 = null;
 
 
         Object id1_tree=null;
@@ -11535,84 +11419,84 @@
         Object id3_tree=null;
         Object ga2_tree=null;
         Object id4_tree=null;
-        Object EQUAL243_tree=null;
-        Object GREATER244_tree=null;
-        Object GREATER_EQUAL245_tree=null;
-        Object LESS246_tree=null;
-        Object LESS_EQUAL247_tree=null;
-        Object NOT_EQUAL248_tree=null;
+        Object EQUAL244_tree=null;
+        Object GREATER245_tree=null;
+        Object GREATER_EQUAL246_tree=null;
+        Object LESS247_tree=null;
+        Object LESS_EQUAL248_tree=null;
+        Object NOT_EQUAL249_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1233:2: ( ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= GRAVE_ACCENT id2= ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | id3= ID | ga2= GRAVE_ACCENT id4= ID square_chunk ) expression_value )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1233:4: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= GRAVE_ACCENT id2= ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | id3= ID | ga2= GRAVE_ACCENT id4= ID square_chunk ) expression_value
+            // src/main/resources/org/drools/lang/DRL.g:1233:2: ( ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= GRAVE_ACCENT id2= ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | id3= ID | ga2= GRAVE_ACCENT id4= ID square_chunk ) expression_value )
+            // src/main/resources/org/drools/lang/DRL.g:1233:4: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= GRAVE_ACCENT id2= ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | id3= ID | ga2= GRAVE_ACCENT id4= ID square_chunk ) expression_value
             {
             root_0 = (Object)adaptor.nil();
 
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1234:3: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= GRAVE_ACCENT id2= ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | id3= ID | ga2= GRAVE_ACCENT id4= ID square_chunk )
-            int alt85=14;
+            // src/main/resources/org/drools/lang/DRL.g:1234:3: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= GRAVE_ACCENT id2= ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | id3= ID | ga2= GRAVE_ACCENT id4= ID square_chunk )
+            int alt86=14;
             switch ( input.LA(1) ) {
             case EQUAL:
                 {
-                alt85=1;
+                alt86=1;
                 }
                 break;
             case GREATER:
                 {
-                alt85=2;
+                alt86=2;
                 }
                 break;
             case GREATER_EQUAL:
                 {
-                alt85=3;
+                alt86=3;
                 }
                 break;
             case LESS:
                 {
-                alt85=4;
+                alt86=4;
                 }
                 break;
             case LESS_EQUAL:
                 {
-                alt85=5;
+                alt86=5;
                 }
                 break;
             case NOT_EQUAL:
                 {
-                alt85=6;
+                alt86=6;
                 }
                 break;
             case ID:
                 {
-                int LA85_7 = input.LA(2);
+                int LA86_7 = input.LA(2);
 
-                if ( (LA85_7==ID||LA85_7==GRAVE_ACCENT) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
-                    alt85=7;
+                if ( (LA86_7==ID||LA86_7==GRAVE_ACCENT) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
+                    alt86=7;
                 }
                 else if ( ((validateIdentifierKey(DroolsSoftKeywords.CONTAINS))) ) {
-                    alt85=8;
+                    alt86=8;
                 }
                 else if ( ((validateIdentifierKey(DroolsSoftKeywords.EXCLUDES))) ) {
-                    alt85=9;
+                    alt86=9;
                 }
                 else if ( ((validateIdentifierKey(DroolsSoftKeywords.MATCHES))) ) {
-                    alt85=10;
+                    alt86=10;
                 }
                 else if ( ((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE))) ) {
-                    alt85=11;
+                    alt86=11;
                 }
                 else if ( ((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF))) ) {
-                    alt85=12;
+                    alt86=12;
                 }
                 else if ( (true) ) {
-                    alt85=13;
+                    alt86=13;
                 }
                 else {
                     if (backtracking>0) {failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1234:3: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= GRAVE_ACCENT id2= ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | id3= ID | ga2= GRAVE_ACCENT id4= ID square_chunk )", 85, 7, input);
+                        new NoViableAltException("1234:3: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= GRAVE_ACCENT id2= ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | id3= ID | ga2= GRAVE_ACCENT id4= ID square_chunk )", 86, 7, input);
 
                     throw nvae;
                 }
@@ -11620,206 +11504,206 @@
                 break;
             case GRAVE_ACCENT:
                 {
-                alt85=14;
+                alt86=14;
                 }
                 break;
             default:
                 if (backtracking>0) {failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1234:3: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= GRAVE_ACCENT id2= ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | id3= ID | ga2= GRAVE_ACCENT id4= ID square_chunk )", 85, 0, input);
+                    new NoViableAltException("1234:3: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= GRAVE_ACCENT id2= ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | id3= ID | ga2= GRAVE_ACCENT id4= ID square_chunk )", 86, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt85) {
+            switch (alt86) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1234:4: EQUAL
+                    // src/main/resources/org/drools/lang/DRL.g:1234:4: EQUAL
                     {
-                    EQUAL243=(Token)input.LT(1);
-                    match(input,EQUAL,FOLLOW_EQUAL_in_simple_operator4110); if (failed) return retval;
+                    EQUAL244=(Token)input.LT(1);
+                    match(input,EQUAL,FOLLOW_EQUAL_in_simple_operator4116); if (failed) return retval;
                     if ( backtracking==0 ) {
-                    EQUAL243_tree = (Object)adaptor.create(EQUAL243);
-                    root_0 = (Object)adaptor.becomeRoot(EQUAL243_tree, root_0);
+                    EQUAL244_tree = (Object)adaptor.create(EQUAL244);
+                    root_0 = (Object)adaptor.becomeRoot(EQUAL244_tree, root_0);
                     }
                     if ( backtracking==0 ) {
-                      	emit(EQUAL243, DroolsEditorType.SYMBOL);	
+                      	emit(EQUAL244, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1235:4: GREATER
+                    // src/main/resources/org/drools/lang/DRL.g:1235:4: GREATER
                     {
-                    GREATER244=(Token)input.LT(1);
-                    match(input,GREATER,FOLLOW_GREATER_in_simple_operator4118); if (failed) return retval;
+                    GREATER245=(Token)input.LT(1);
+                    match(input,GREATER,FOLLOW_GREATER_in_simple_operator4124); if (failed) return retval;
                     if ( backtracking==0 ) {
-                    GREATER244_tree = (Object)adaptor.create(GREATER244);
-                    root_0 = (Object)adaptor.becomeRoot(GREATER244_tree, root_0);
+                    GREATER245_tree = (Object)adaptor.create(GREATER245);
+                    root_0 = (Object)adaptor.becomeRoot(GREATER245_tree, root_0);
                     }
                     if ( backtracking==0 ) {
-                      	emit(GREATER244, DroolsEditorType.SYMBOL);	
+                      	emit(GREATER245, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1236:4: GREATER_EQUAL
+                    // src/main/resources/org/drools/lang/DRL.g:1236:4: GREATER_EQUAL
                     {
-                    GREATER_EQUAL245=(Token)input.LT(1);
-                    match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_simple_operator4126); if (failed) return retval;
+                    GREATER_EQUAL246=(Token)input.LT(1);
+                    match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_simple_operator4132); if (failed) return retval;
                     if ( backtracking==0 ) {
-                    GREATER_EQUAL245_tree = (Object)adaptor.create(GREATER_EQUAL245);
-                    root_0 = (Object)adaptor.becomeRoot(GREATER_EQUAL245_tree, root_0);
+                    GREATER_EQUAL246_tree = (Object)adaptor.create(GREATER_EQUAL246);
+                    root_0 = (Object)adaptor.becomeRoot(GREATER_EQUAL246_tree, root_0);
                     }
                     if ( backtracking==0 ) {
-                      	emit(GREATER_EQUAL245, DroolsEditorType.SYMBOL);	
+                      	emit(GREATER_EQUAL246, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 4 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1237:4: LESS
+                    // src/main/resources/org/drools/lang/DRL.g:1237:4: LESS
                     {
-                    LESS246=(Token)input.LT(1);
-                    match(input,LESS,FOLLOW_LESS_in_simple_operator4134); if (failed) return retval;
+                    LESS247=(Token)input.LT(1);
+                    match(input,LESS,FOLLOW_LESS_in_simple_operator4140); if (failed) return retval;
                     if ( backtracking==0 ) {
-                    LESS246_tree = (Object)adaptor.create(LESS246);
-                    root_0 = (Object)adaptor.becomeRoot(LESS246_tree, root_0);
+                    LESS247_tree = (Object)adaptor.create(LESS247);
+                    root_0 = (Object)adaptor.becomeRoot(LESS247_tree, root_0);
                     }
                     if ( backtracking==0 ) {
-                      	emit(LESS246, DroolsEditorType.SYMBOL);	
+                      	emit(LESS247, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 5 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1238:4: LESS_EQUAL
+                    // src/main/resources/org/drools/lang/DRL.g:1238:4: LESS_EQUAL
                     {
-                    LESS_EQUAL247=(Token)input.LT(1);
-                    match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_simple_operator4142); if (failed) return retval;
+                    LESS_EQUAL248=(Token)input.LT(1);
+                    match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_simple_operator4148); if (failed) return retval;
                     if ( backtracking==0 ) {
-                    LESS_EQUAL247_tree = (Object)adaptor.create(LESS_EQUAL247);
-                    root_0 = (Object)adaptor.becomeRoot(LESS_EQUAL247_tree, root_0);
+                    LESS_EQUAL248_tree = (Object)adaptor.create(LESS_EQUAL248);
+                    root_0 = (Object)adaptor.becomeRoot(LESS_EQUAL248_tree, root_0);
                     }
                     if ( backtracking==0 ) {
-                      	emit(LESS_EQUAL247, DroolsEditorType.SYMBOL);	
+                      	emit(LESS_EQUAL248, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 6 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1239:4: NOT_EQUAL
+                    // src/main/resources/org/drools/lang/DRL.g:1239:4: NOT_EQUAL
                     {
-                    NOT_EQUAL248=(Token)input.LT(1);
-                    match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_simple_operator4150); if (failed) return retval;
+                    NOT_EQUAL249=(Token)input.LT(1);
+                    match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_simple_operator4156); if (failed) return retval;
                     if ( backtracking==0 ) {
-                    NOT_EQUAL248_tree = (Object)adaptor.create(NOT_EQUAL248);
-                    root_0 = (Object)adaptor.becomeRoot(NOT_EQUAL248_tree, root_0);
+                    NOT_EQUAL249_tree = (Object)adaptor.create(NOT_EQUAL249);
+                    root_0 = (Object)adaptor.becomeRoot(NOT_EQUAL249_tree, root_0);
                     }
                     if ( backtracking==0 ) {
-                      	emit(NOT_EQUAL248, DroolsEditorType.SYMBOL);	
+                      	emit(NOT_EQUAL249, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 7 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1240:4: not_key ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= GRAVE_ACCENT id2= ID square_chunk )
+                    // src/main/resources/org/drools/lang/DRL.g:1240:4: not_key ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= GRAVE_ACCENT id2= ID square_chunk )
                     {
-                    pushFollow(FOLLOW_not_key_in_simple_operator4158);
-                    not_key249=not_key();
+                    pushFollow(FOLLOW_not_key_in_simple_operator4164);
+                    not_key250=not_key();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, not_key249.getTree());
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1241:3: ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= GRAVE_ACCENT id2= ID square_chunk )
-                    int alt84=6;
-                    int LA84_0 = input.LA(1);
+                    if ( backtracking==0 ) adaptor.addChild(root_0, not_key250.getTree());
+                    // src/main/resources/org/drools/lang/DRL.g:1241:3: ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= GRAVE_ACCENT id2= ID square_chunk )
+                    int alt85=6;
+                    int LA85_0 = input.LA(1);
 
-                    if ( (LA84_0==ID) ) {
-                        int LA84_1 = input.LA(2);
+                    if ( (LA85_0==ID) ) {
+                        int LA85_1 = input.LA(2);
 
                         if ( ((validateIdentifierKey(DroolsSoftKeywords.CONTAINS))) ) {
-                            alt84=1;
+                            alt85=1;
                         }
                         else if ( ((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE))) ) {
-                            alt84=2;
+                            alt85=2;
                         }
                         else if ( ((validateIdentifierKey(DroolsSoftKeywords.MATCHES))) ) {
-                            alt84=3;
+                            alt85=3;
                         }
                         else if ( ((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF))) ) {
-                            alt84=4;
+                            alt85=4;
                         }
                         else if ( (true) ) {
-                            alt84=5;
+                            alt85=5;
                         }
                         else {
                             if (backtracking>0) {failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("1241:3: ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= GRAVE_ACCENT id2= ID square_chunk )", 84, 1, input);
+                                new NoViableAltException("1241:3: ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= GRAVE_ACCENT id2= ID square_chunk )", 85, 1, input);
 
                             throw nvae;
                         }
                     }
-                    else if ( (LA84_0==GRAVE_ACCENT) ) {
-                        alt84=6;
+                    else if ( (LA85_0==GRAVE_ACCENT) ) {
+                        alt85=6;
                     }
                     else {
                         if (backtracking>0) {failed=true; return retval;}
                         NoViableAltException nvae =
-                            new NoViableAltException("1241:3: ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= GRAVE_ACCENT id2= ID square_chunk )", 84, 0, input);
+                            new NoViableAltException("1241:3: ( contains_key | soundslike_key | matches_key | memberof_key | id1= ID | ga1= GRAVE_ACCENT id2= ID square_chunk )", 85, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt84) {
+                    switch (alt85) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1241:5: contains_key
+                            // src/main/resources/org/drools/lang/DRL.g:1241:5: contains_key
                             {
-                            pushFollow(FOLLOW_contains_key_in_simple_operator4165);
-                            contains_key250=contains_key();
+                            pushFollow(FOLLOW_contains_key_in_simple_operator4171);
+                            contains_key251=contains_key();
                             _fsp--;
                             if (failed) return retval;
-                            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(contains_key250.getTree(), root_0);
+                            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(contains_key251.getTree(), root_0);
 
                             }
                             break;
                         case 2 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1242:5: soundslike_key
+                            // src/main/resources/org/drools/lang/DRL.g:1242:5: soundslike_key
                             {
-                            pushFollow(FOLLOW_soundslike_key_in_simple_operator4172);
-                            soundslike_key251=soundslike_key();
+                            pushFollow(FOLLOW_soundslike_key_in_simple_operator4178);
+                            soundslike_key252=soundslike_key();
                             _fsp--;
                             if (failed) return retval;
-                            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(soundslike_key251.getTree(), root_0);
+                            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(soundslike_key252.getTree(), root_0);
 
                             }
                             break;
                         case 3 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1243:5: matches_key
+                            // src/main/resources/org/drools/lang/DRL.g:1243:5: matches_key
                             {
-                            pushFollow(FOLLOW_matches_key_in_simple_operator4179);
-                            matches_key252=matches_key();
+                            pushFollow(FOLLOW_matches_key_in_simple_operator4185);
+                            matches_key253=matches_key();
                             _fsp--;
                             if (failed) return retval;
-                            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(matches_key252.getTree(), root_0);
+                            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(matches_key253.getTree(), root_0);
 
                             }
                             break;
                         case 4 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1244:5: memberof_key
+                            // src/main/resources/org/drools/lang/DRL.g:1244:5: memberof_key
                             {
-                            pushFollow(FOLLOW_memberof_key_in_simple_operator4186);
-                            memberof_key253=memberof_key();
+                            pushFollow(FOLLOW_memberof_key_in_simple_operator4192);
+                            memberof_key254=memberof_key();
                             _fsp--;
                             if (failed) return retval;
-                            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(memberof_key253.getTree(), root_0);
+                            if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(memberof_key254.getTree(), root_0);
 
                             }
                             break;
                         case 5 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1245:5: id1= ID
+                            // src/main/resources/org/drools/lang/DRL.g:1245:5: id1= ID
                             {
                             id1=(Token)input.LT(1);
-                            match(input,ID,FOLLOW_ID_in_simple_operator4195); if (failed) return retval;
+                            match(input,ID,FOLLOW_ID_in_simple_operator4201); if (failed) return retval;
                             if ( backtracking==0 ) {
                             id1_tree = (Object)adaptor.create(id1);
                             root_0 = (Object)adaptor.becomeRoot(id1_tree, root_0);
@@ -11831,15 +11715,15 @@
                             }
                             break;
                         case 6 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1246:5: ga1= GRAVE_ACCENT id2= ID square_chunk
+                            // src/main/resources/org/drools/lang/DRL.g:1246:5: ga1= GRAVE_ACCENT id2= ID square_chunk
                             {
                             ga1=(Token)input.LT(1);
-                            match(input,GRAVE_ACCENT,FOLLOW_GRAVE_ACCENT_in_simple_operator4206); if (failed) return retval;
+                            match(input,GRAVE_ACCENT,FOLLOW_GRAVE_ACCENT_in_simple_operator4212); if (failed) return retval;
                             if ( backtracking==0 ) {
                               	emit(ga1, DroolsEditorType.SYMBOL);	
                             }
                             id2=(Token)input.LT(1);
-                            match(input,ID,FOLLOW_ID_in_simple_operator4214); if (failed) return retval;
+                            match(input,ID,FOLLOW_ID_in_simple_operator4220); if (failed) return retval;
                             if ( backtracking==0 ) {
                             id2_tree = (Object)adaptor.create(id2);
                             root_0 = (Object)adaptor.becomeRoot(id2_tree, root_0);
@@ -11847,11 +11731,11 @@
                             if ( backtracking==0 ) {
                               	emit(id2, DroolsEditorType.IDENTIFIER);	
                             }
-                            pushFollow(FOLLOW_square_chunk_in_simple_operator4220);
-                            square_chunk254=square_chunk();
+                            pushFollow(FOLLOW_square_chunk_in_simple_operator4226);
+                            square_chunk255=square_chunk();
                             _fsp--;
                             if (failed) return retval;
-                            if ( backtracking==0 ) adaptor.addChild(root_0, square_chunk254.getTree());
+                            if ( backtracking==0 ) adaptor.addChild(root_0, square_chunk255.getTree());
 
                             }
                             break;
@@ -11862,65 +11746,65 @@
                     }
                     break;
                 case 8 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1247:4: contains_key
+                    // src/main/resources/org/drools/lang/DRL.g:1247:4: contains_key
                     {
-                    pushFollow(FOLLOW_contains_key_in_simple_operator4226);
-                    contains_key255=contains_key();
+                    pushFollow(FOLLOW_contains_key_in_simple_operator4232);
+                    contains_key256=contains_key();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(contains_key255.getTree(), root_0);
+                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(contains_key256.getTree(), root_0);
 
                     }
                     break;
                 case 9 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1248:4: excludes_key
+                    // src/main/resources/org/drools/lang/DRL.g:1248:4: excludes_key
                     {
-                    pushFollow(FOLLOW_excludes_key_in_simple_operator4232);
-                    excludes_key256=excludes_key();
+                    pushFollow(FOLLOW_excludes_key_in_simple_operator4238);
+                    excludes_key257=excludes_key();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(excludes_key256.getTree(), root_0);
+                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(excludes_key257.getTree(), root_0);
 
                     }
                     break;
                 case 10 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1249:4: matches_key
+                    // src/main/resources/org/drools/lang/DRL.g:1249:4: matches_key
                     {
-                    pushFollow(FOLLOW_matches_key_in_simple_operator4238);
-                    matches_key257=matches_key();
+                    pushFollow(FOLLOW_matches_key_in_simple_operator4244);
+                    matches_key258=matches_key();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(matches_key257.getTree(), root_0);
+                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(matches_key258.getTree(), root_0);
 
                     }
                     break;
                 case 11 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1250:4: soundslike_key
+                    // src/main/resources/org/drools/lang/DRL.g:1250:4: soundslike_key
                     {
-                    pushFollow(FOLLOW_soundslike_key_in_simple_operator4244);
-                    soundslike_key258=soundslike_key();
+                    pushFollow(FOLLOW_soundslike_key_in_simple_operator4250);
+                    soundslike_key259=soundslike_key();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(soundslike_key258.getTree(), root_0);
+                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(soundslike_key259.getTree(), root_0);
 
                     }
                     break;
                 case 12 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1251:4: memberof_key
+                    // src/main/resources/org/drools/lang/DRL.g:1251:4: memberof_key
                     {
-                    pushFollow(FOLLOW_memberof_key_in_simple_operator4250);
-                    memberof_key259=memberof_key();
+                    pushFollow(FOLLOW_memberof_key_in_simple_operator4256);
+                    memberof_key260=memberof_key();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(memberof_key259.getTree(), root_0);
+                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(memberof_key260.getTree(), root_0);
 
                     }
                     break;
                 case 13 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1252:4: id3= ID
+                    // src/main/resources/org/drools/lang/DRL.g:1252:4: id3= ID
                     {
                     id3=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_simple_operator4258); if (failed) return retval;
+                    match(input,ID,FOLLOW_ID_in_simple_operator4264); if (failed) return retval;
                     if ( backtracking==0 ) {
                     id3_tree = (Object)adaptor.create(id3);
                     root_0 = (Object)adaptor.becomeRoot(id3_tree, root_0);
@@ -11932,15 +11816,15 @@
                     }
                     break;
                 case 14 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1253:4: ga2= GRAVE_ACCENT id4= ID square_chunk
+                    // src/main/resources/org/drools/lang/DRL.g:1253:4: ga2= GRAVE_ACCENT id4= ID square_chunk
                     {
                     ga2=(Token)input.LT(1);
-                    match(input,GRAVE_ACCENT,FOLLOW_GRAVE_ACCENT_in_simple_operator4268); if (failed) return retval;
+                    match(input,GRAVE_ACCENT,FOLLOW_GRAVE_ACCENT_in_simple_operator4274); if (failed) return retval;
                     if ( backtracking==0 ) {
                       	emit(ga2, DroolsEditorType.SYMBOL);	
                     }
                     id4=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_simple_operator4276); if (failed) return retval;
+                    match(input,ID,FOLLOW_ID_in_simple_operator4282); if (failed) return retval;
                     if ( backtracking==0 ) {
                     id4_tree = (Object)adaptor.create(id4);
                     root_0 = (Object)adaptor.becomeRoot(id4_tree, root_0);
@@ -11948,11 +11832,11 @@
                     if ( backtracking==0 ) {
                       	emit(id4, DroolsEditorType.IDENTIFIER);	
                     }
-                    pushFollow(FOLLOW_square_chunk_in_simple_operator4282);
-                    square_chunk260=square_chunk();
+                    pushFollow(FOLLOW_square_chunk_in_simple_operator4288);
+                    square_chunk261=square_chunk();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, square_chunk260.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, square_chunk261.getTree());
 
                     }
                     break;
@@ -11962,11 +11846,11 @@
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);	
             }
-            pushFollow(FOLLOW_expression_value_in_simple_operator4289);
-            expression_value261=expression_value();
+            pushFollow(FOLLOW_expression_value_in_simple_operator4295);
+            expression_value262=expression_value();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, expression_value261.getTree());
+            if ( backtracking==0 ) adaptor.addChild(root_0, expression_value262.getTree());
 
             }
 
@@ -11993,57 +11877,57 @@
     };
 
     // $ANTLR start compound_operator
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1259:1: compound_operator : ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN ;
+    // src/main/resources/org/drools/lang/DRL.g:1259: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_PAREN265=null;
-        Token COMMA267=null;
-        Token RIGHT_PAREN269=null;
-        in_key_return in_key262 = null;
+        Token LEFT_PAREN266=null;
+        Token COMMA268=null;
+        Token RIGHT_PAREN270=null;
+        in_key_return in_key263 = null;
 
-        not_key_return not_key263 = null;
+        not_key_return not_key264 = null;
 
-        in_key_return in_key264 = null;
+        in_key_return in_key265 = null;
 
-        expression_value_return expression_value266 = null;
+        expression_value_return expression_value267 = null;
 
-        expression_value_return expression_value268 = null;
+        expression_value_return expression_value269 = null;
 
 
-        Object LEFT_PAREN265_tree=null;
-        Object COMMA267_tree=null;
-        Object RIGHT_PAREN269_tree=null;
+        Object LEFT_PAREN266_tree=null;
+        Object COMMA268_tree=null;
+        Object RIGHT_PAREN270_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1260:2: ( ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1260:4: ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN
+            // src/main/resources/org/drools/lang/DRL.g:1260:2: ( ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN )
+            // src/main/resources/org/drools/lang/DRL.g:1260:4: ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN
             {
             root_0 = (Object)adaptor.nil();
 
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1261:2: ( in_key | not_key in_key )
-            int alt86=2;
-            int LA86_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:1261:2: ( in_key | not_key in_key )
+            int alt87=2;
+            int LA87_0 = input.LA(1);
 
-            if ( (LA86_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IN))||(validateIdentifierKey(DroolsSoftKeywords.NOT))))) {
-                int LA86_1 = input.LA(2);
+            if ( (LA87_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IN))||(validateIdentifierKey(DroolsSoftKeywords.NOT))))) {
+                int LA87_1 = input.LA(2);
 
-                if ( (LA86_1==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.IN)))) {
-                    alt86=1;
+                if ( (LA87_1==ID) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
+                    alt87=2;
                 }
-                else if ( (LA86_1==ID) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
-                    alt86=2;
+                else if ( (LA87_1==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.IN)))) {
+                    alt87=1;
                 }
                 else {
                     if (backtracking>0) {failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1261:2: ( in_key | not_key in_key )", 86, 1, input);
+                        new NoViableAltException("1261:2: ( in_key | not_key in_key )", 87, 1, input);
 
                     throw nvae;
                 }
@@ -12051,35 +11935,35 @@
             else {
                 if (backtracking>0) {failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1261:2: ( in_key | not_key in_key )", 86, 0, input);
+                    new NoViableAltException("1261:2: ( in_key | not_key in_key )", 87, 0, input);
 
                 throw nvae;
             }
-            switch (alt86) {
+            switch (alt87) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1261:4: in_key
+                    // src/main/resources/org/drools/lang/DRL.g:1261:4: in_key
                     {
-                    pushFollow(FOLLOW_in_key_in_compound_operator4307);
-                    in_key262=in_key();
+                    pushFollow(FOLLOW_in_key_in_compound_operator4313);
+                    in_key263=in_key();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key262.getTree(), root_0);
+                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key263.getTree(), root_0);
 
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1261:14: not_key in_key
+                    // src/main/resources/org/drools/lang/DRL.g:1261:14: not_key in_key
                     {
-                    pushFollow(FOLLOW_not_key_in_compound_operator4312);
-                    not_key263=not_key();
+                    pushFollow(FOLLOW_not_key_in_compound_operator4318);
+                    not_key264=not_key();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, not_key263.getTree());
-                    pushFollow(FOLLOW_in_key_in_compound_operator4314);
-                    in_key264=in_key();
+                    if ( backtracking==0 ) adaptor.addChild(root_0, not_key264.getTree());
+                    pushFollow(FOLLOW_in_key_in_compound_operator4320);
+                    in_key265=in_key();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key264.getTree(), root_0);
+                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key265.getTree(), root_0);
 
                     }
                     break;
@@ -12089,58 +11973,58 @@
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);	
             }
-            LEFT_PAREN265=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_compound_operator4325); if (failed) return retval;
+            LEFT_PAREN266=(Token)input.LT(1);
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_compound_operator4331); if (failed) return retval;
             if ( backtracking==0 ) {
-              	emit(LEFT_PAREN265, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_PAREN266, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_expression_value_in_compound_operator4333);
-            expression_value266=expression_value();
+            pushFollow(FOLLOW_expression_value_in_compound_operator4339);
+            expression_value267=expression_value();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, expression_value266.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1264:21: ( COMMA expression_value )*
-            loop87:
+            if ( backtracking==0 ) adaptor.addChild(root_0, expression_value267.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:1264:21: ( COMMA expression_value )*
+            loop88:
             do {
-                int alt87=2;
-                int LA87_0 = input.LA(1);
+                int alt88=2;
+                int LA88_0 = input.LA(1);
 
-                if ( (LA87_0==COMMA) ) {
-                    alt87=1;
+                if ( (LA88_0==COMMA) ) {
+                    alt88=1;
                 }
 
 
-                switch (alt87) {
+                switch (alt88) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1264:23: COMMA expression_value
+            	    // src/main/resources/org/drools/lang/DRL.g:1264:23: COMMA expression_value
             	    {
-            	    COMMA267=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_compound_operator4337); if (failed) return retval;
+            	    COMMA268=(Token)input.LT(1);
+            	    match(input,COMMA,FOLLOW_COMMA_in_compound_operator4343); if (failed) return retval;
             	    if ( backtracking==0 ) {
-            	      	emit(COMMA267, DroolsEditorType.SYMBOL);	
+            	      	emit(COMMA268, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_expression_value_in_compound_operator4342);
-            	    expression_value268=expression_value();
+            	    pushFollow(FOLLOW_expression_value_in_compound_operator4348);
+            	    expression_value269=expression_value();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, expression_value268.getTree());
+            	    if ( backtracking==0 ) adaptor.addChild(root_0, expression_value269.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop87;
+            	    break loop88;
                 }
             } while (true);
 
-            RIGHT_PAREN269=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_compound_operator4350); if (failed) return retval;
+            RIGHT_PAREN270=(Token)input.LT(1);
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_compound_operator4356); if (failed) return retval;
             if ( backtracking==0 ) {
-            RIGHT_PAREN269_tree = (Object)adaptor.create(RIGHT_PAREN269);
-            adaptor.addChild(root_0, RIGHT_PAREN269_tree);
+            RIGHT_PAREN270_tree = (Object)adaptor.create(RIGHT_PAREN270);
+            adaptor.addChild(root_0, RIGHT_PAREN270_tree);
             }
             if ( backtracking==0 ) {
-              	emit(RIGHT_PAREN269, DroolsEditorType.SYMBOL);	
+              	emit(RIGHT_PAREN270, DroolsEditorType.SYMBOL);	
             }
             if ( backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_END);	
@@ -12177,33 +12061,33 @@
     };
 
     // $ANTLR start expression_value
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1275:1: expression_value : ( accessor_path | literal_constraint | paren_chunk ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1275: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_path270 = null;
+        accessor_path_return accessor_path271 = null;
 
-        literal_constraint_return literal_constraint271 = null;
+        literal_constraint_return literal_constraint272 = null;
 
-        paren_chunk_return paren_chunk272 = null;
+        paren_chunk_return paren_chunk273 = null;
 
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1276:2: ( ( accessor_path | literal_constraint | paren_chunk ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1276:4: ( accessor_path | literal_constraint | paren_chunk )
+            // src/main/resources/org/drools/lang/DRL.g:1276:2: ( ( accessor_path | literal_constraint | paren_chunk ) )
+            // src/main/resources/org/drools/lang/DRL.g:1276:4: ( accessor_path | literal_constraint | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1276:4: ( accessor_path | literal_constraint | paren_chunk )
-            int alt88=3;
+            // src/main/resources/org/drools/lang/DRL.g:1276:4: ( accessor_path | literal_constraint | paren_chunk )
+            int alt89=3;
             switch ( input.LA(1) ) {
             case ID:
                 {
-                alt88=1;
+                alt89=1;
                 }
                 break;
             case STRING:
@@ -12212,53 +12096,53 @@
             case FLOAT:
             case NULL:
                 {
-                alt88=2;
+                alt89=2;
                 }
                 break;
             case LEFT_PAREN:
                 {
-                alt88=3;
+                alt89=3;
                 }
                 break;
             default:
                 if (backtracking>0) {failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1276:4: ( accessor_path | literal_constraint | paren_chunk )", 88, 0, input);
+                    new NoViableAltException("1276:4: ( accessor_path | literal_constraint | paren_chunk )", 89, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt88) {
+            switch (alt89) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1276:5: accessor_path
+                    // src/main/resources/org/drools/lang/DRL.g:1276:5: accessor_path
                     {
-                    pushFollow(FOLLOW_accessor_path_in_expression_value4371);
-                    accessor_path270=accessor_path();
+                    pushFollow(FOLLOW_accessor_path_in_expression_value4377);
+                    accessor_path271=accessor_path();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, accessor_path270.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, accessor_path271.getTree());
 
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1277:4: literal_constraint
+                    // src/main/resources/org/drools/lang/DRL.g:1277:4: literal_constraint
                     {
-                    pushFollow(FOLLOW_literal_constraint_in_expression_value4376);
-                    literal_constraint271=literal_constraint();
+                    pushFollow(FOLLOW_literal_constraint_in_expression_value4382);
+                    literal_constraint272=literal_constraint();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, literal_constraint271.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, literal_constraint272.getTree());
 
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1278:4: paren_chunk
+                    // src/main/resources/org/drools/lang/DRL.g:1278:4: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_expression_value4382);
-                    paren_chunk272=paren_chunk();
+                    pushFollow(FOLLOW_paren_chunk_in_expression_value4388);
+                    paren_chunk273=paren_chunk();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, paren_chunk272.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, paren_chunk273.getTree());
 
                     }
                     break;
@@ -12304,144 +12188,144 @@
     };
 
     // $ANTLR start literal_constraint
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1292:1: literal_constraint : ( STRING | INT | FLOAT | BOOL | NULL );
+    // src/main/resources/org/drools/lang/DRL.g:1292: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 STRING273=null;
-        Token INT274=null;
-        Token FLOAT275=null;
-        Token BOOL276=null;
-        Token NULL277=null;
+        Token STRING274=null;
+        Token INT275=null;
+        Token FLOAT276=null;
+        Token BOOL277=null;
+        Token NULL278=null;
 
-        Object STRING273_tree=null;
-        Object INT274_tree=null;
-        Object FLOAT275_tree=null;
-        Object BOOL276_tree=null;
-        Object NULL277_tree=null;
+        Object STRING274_tree=null;
+        Object INT275_tree=null;
+        Object FLOAT276_tree=null;
+        Object BOOL277_tree=null;
+        Object NULL278_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1293:2: ( STRING | INT | FLOAT | BOOL | NULL )
-            int alt89=5;
+            // src/main/resources/org/drools/lang/DRL.g:1293:2: ( STRING | INT | FLOAT | BOOL | NULL )
+            int alt90=5;
             switch ( input.LA(1) ) {
             case STRING:
                 {
-                alt89=1;
+                alt90=1;
                 }
                 break;
             case INT:
                 {
-                alt89=2;
+                alt90=2;
                 }
                 break;
             case FLOAT:
                 {
-                alt89=3;
+                alt90=3;
                 }
                 break;
             case BOOL:
                 {
-                alt89=4;
+                alt90=4;
                 }
                 break;
             case NULL:
                 {
-                alt89=5;
+                alt90=5;
                 }
                 break;
             default:
                 if (backtracking>0) {failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1292:1: literal_constraint : ( STRING | INT | FLOAT | BOOL | NULL );", 89, 0, input);
+                    new NoViableAltException("1292:1: literal_constraint : ( STRING | INT | FLOAT | BOOL | NULL );", 90, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt89) {
+            switch (alt90) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1293:4: STRING
+                    // src/main/resources/org/drools/lang/DRL.g:1293:4: STRING
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    STRING273=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_literal_constraint4401); if (failed) return retval;
+                    STRING274=(Token)input.LT(1);
+                    match(input,STRING,FOLLOW_STRING_in_literal_constraint4407); if (failed) return retval;
                     if ( backtracking==0 ) {
-                    STRING273_tree = (Object)adaptor.create(STRING273);
-                    adaptor.addChild(root_0, STRING273_tree);
+                    STRING274_tree = (Object)adaptor.create(STRING274);
+                    adaptor.addChild(root_0, STRING274_tree);
                     }
                     if ( backtracking==0 ) {
-                      	emit(STRING273, DroolsEditorType.STRING_CONST);	
+                      	emit(STRING274, DroolsEditorType.STRING_CONST);	
                     }
 
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1294:4: INT
+                    // src/main/resources/org/drools/lang/DRL.g:1294:4: INT
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    INT274=(Token)input.LT(1);
-                    match(input,INT,FOLLOW_INT_in_literal_constraint4408); if (failed) return retval;
+                    INT275=(Token)input.LT(1);
+                    match(input,INT,FOLLOW_INT_in_literal_constraint4414); if (failed) return retval;
                     if ( backtracking==0 ) {
-                    INT274_tree = (Object)adaptor.create(INT274);
-                    adaptor.addChild(root_0, INT274_tree);
+                    INT275_tree = (Object)adaptor.create(INT275);
+                    adaptor.addChild(root_0, INT275_tree);
                     }
                     if ( backtracking==0 ) {
-                      	emit(INT274, DroolsEditorType.NUMERIC_CONST);	
+                      	emit(INT275, DroolsEditorType.NUMERIC_CONST);	
                     }
 
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1295:4: FLOAT
+                    // src/main/resources/org/drools/lang/DRL.g:1295:4: FLOAT
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    FLOAT275=(Token)input.LT(1);
-                    match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint4415); if (failed) return retval;
+                    FLOAT276=(Token)input.LT(1);
+                    match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint4421); if (failed) return retval;
                     if ( backtracking==0 ) {
-                    FLOAT275_tree = (Object)adaptor.create(FLOAT275);
-                    adaptor.addChild(root_0, FLOAT275_tree);
+                    FLOAT276_tree = (Object)adaptor.create(FLOAT276);
+                    adaptor.addChild(root_0, FLOAT276_tree);
                     }
                     if ( backtracking==0 ) {
-                      	emit(FLOAT275, DroolsEditorType.NUMERIC_CONST);	
+                      	emit(FLOAT276, DroolsEditorType.NUMERIC_CONST);	
                     }
 
                     }
                     break;
                 case 4 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1296:4: BOOL
+                    // src/main/resources/org/drools/lang/DRL.g:1296:4: BOOL
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    BOOL276=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_literal_constraint4422); if (failed) return retval;
+                    BOOL277=(Token)input.LT(1);
+                    match(input,BOOL,FOLLOW_BOOL_in_literal_constraint4428); if (failed) return retval;
                     if ( backtracking==0 ) {
-                    BOOL276_tree = (Object)adaptor.create(BOOL276);
-                    adaptor.addChild(root_0, BOOL276_tree);
+                    BOOL277_tree = (Object)adaptor.create(BOOL277);
+                    adaptor.addChild(root_0, BOOL277_tree);
                     }
                     if ( backtracking==0 ) {
-                      	emit(BOOL276, DroolsEditorType.BOOLEAN_CONST);	
+                      	emit(BOOL277, DroolsEditorType.BOOLEAN_CONST);	
                     }
 
                     }
                     break;
                 case 5 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1297:4: NULL
+                    // src/main/resources/org/drools/lang/DRL.g:1297:4: NULL
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    NULL277=(Token)input.LT(1);
-                    match(input,NULL,FOLLOW_NULL_in_literal_constraint4429); if (failed) return retval;
+                    NULL278=(Token)input.LT(1);
+                    match(input,NULL,FOLLOW_NULL_in_literal_constraint4435); if (failed) return retval;
                     if ( backtracking==0 ) {
-                    NULL277_tree = (Object)adaptor.create(NULL277);
-                    adaptor.addChild(root_0, NULL277_tree);
+                    NULL278_tree = (Object)adaptor.create(NULL278);
+                    adaptor.addChild(root_0, NULL278_tree);
                     }
                     if ( backtracking==0 ) {
-                      	emit(NULL277, DroolsEditorType.NULL_CONST);	
+                      	emit(NULL278, DroolsEditorType.NULL_CONST);	
                     }
 
                     }
@@ -12471,7 +12355,7 @@
     };
 
     // $ANTLR start pattern_type
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1300:1: pattern_type : id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1300:1: pattern_type : id+= ID (id+= DOT id+= 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);
@@ -12480,7 +12364,7 @@
 
         Token id=null;
         List list_id=null;
-        dimension_definition_return dimension_definition278 = null;
+        dimension_definition_return dimension_definition279 = null;
 
 
         Object id_tree=null;
@@ -12488,40 +12372,40 @@
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
         RewriteRuleSubtreeStream stream_dimension_definition=new RewriteRuleSubtreeStream(adaptor,"rule dimension_definition");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1301:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1301:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
+            // src/main/resources/org/drools/lang/DRL.g:1301:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) )
+            // src/main/resources/org/drools/lang/DRL.g:1301:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
             {
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_pattern_type4444); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_pattern_type4450); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if (list_id==null) list_id=new ArrayList();
             list_id.add(id);
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1301:11: (id+= DOT id+= ID )*
-            loop90:
+            // src/main/resources/org/drools/lang/DRL.g:1301:11: (id+= DOT id+= ID )*
+            loop91:
             do {
-                int alt90=2;
-                int LA90_0 = input.LA(1);
+                int alt91=2;
+                int LA91_0 = input.LA(1);
 
-                if ( (LA90_0==DOT) ) {
-                    alt90=1;
+                if ( (LA91_0==DOT) ) {
+                    alt91=1;
                 }
 
 
-                switch (alt90) {
+                switch (alt91) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1301:13: id+= DOT id+= ID
+            	    // src/main/resources/org/drools/lang/DRL.g:1301:13: id+= DOT id+= ID
             	    {
             	    id=(Token)input.LT(1);
-            	    match(input,DOT,FOLLOW_DOT_in_pattern_type4450); if (failed) return retval;
+            	    match(input,DOT,FOLLOW_DOT_in_pattern_type4456); if (failed) return retval;
             	    if ( backtracking==0 ) stream_DOT.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
 
             	    id=(Token)input.LT(1);
-            	    match(input,ID,FOLLOW_ID_in_pattern_type4454); if (failed) return retval;
+            	    match(input,ID,FOLLOW_ID_in_pattern_type4460); if (failed) return retval;
             	    if ( backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
@@ -12532,7 +12416,7 @@
             	    break;
 
             	default :
-            	    break loop90;
+            	    break loop91;
                 }
             } while (true);
 
@@ -12540,32 +12424,32 @@
               	emit(list_id, DroolsEditorType.IDENTIFIER);
               		setParaphrasesValue(DroolsParaphraseTypes.PATTERN, buildStringFromTokens(list_id));	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1304:6: ( dimension_definition )*
-            loop91:
+            // src/main/resources/org/drools/lang/DRL.g:1304:6: ( dimension_definition )*
+            loop92:
             do {
-                int alt91=2;
-                int LA91_0 = input.LA(1);
+                int alt92=2;
+                int LA92_0 = input.LA(1);
 
-                if ( (LA91_0==LEFT_SQUARE) ) {
-                    alt91=1;
+                if ( (LA92_0==LEFT_SQUARE) ) {
+                    alt92=1;
                 }
 
 
-                switch (alt91) {
+                switch (alt92) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1304:6: dimension_definition
+            	    // src/main/resources/org/drools/lang/DRL.g:1304:6: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_pattern_type4469);
-            	    dimension_definition278=dimension_definition();
+            	    pushFollow(FOLLOW_dimension_definition_in_pattern_type4475);
+            	    dimension_definition279=dimension_definition();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_dimension_definition.add(dimension_definition278.getTree());
+            	    if ( backtracking==0 ) stream_dimension_definition.add(dimension_definition279.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop91;
+            	    break loop92;
                 }
             } while (true);
 
@@ -12583,7 +12467,7 @@
             root_0 = (Object)adaptor.nil();
             // 1305:3: -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1305:6: ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
+                // src/main/resources/org/drools/lang/DRL.g:1305: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);
@@ -12596,7 +12480,7 @@
 
                 }
                 stream_ID.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1305:28: ( dimension_definition )*
+                // src/main/resources/org/drools/lang/DRL.g:1305:28: ( dimension_definition )*
                 while ( stream_dimension_definition.hasNext() ) {
                     adaptor.addChild(root_1, stream_dimension_definition.next());
 
@@ -12635,7 +12519,7 @@
     };
 
     // $ANTLR start data_type
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1308:1: data_type : id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1308:1: data_type : id+= ID (id+= DOT id+= 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);
@@ -12644,7 +12528,7 @@
 
         Token id=null;
         List list_id=null;
-        dimension_definition_return dimension_definition279 = null;
+        dimension_definition_return dimension_definition280 = null;
 
 
         Object id_tree=null;
@@ -12652,40 +12536,40 @@
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
         RewriteRuleSubtreeStream stream_dimension_definition=new RewriteRuleSubtreeStream(adaptor,"rule dimension_definition");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1309:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1309:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
+            // src/main/resources/org/drools/lang/DRL.g:1309:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) )
+            // src/main/resources/org/drools/lang/DRL.g:1309:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
             {
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_data_type4497); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_data_type4503); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if (list_id==null) list_id=new ArrayList();
             list_id.add(id);
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1309:11: (id+= DOT id+= ID )*
-            loop92:
+            // src/main/resources/org/drools/lang/DRL.g:1309:11: (id+= DOT id+= ID )*
+            loop93:
             do {
-                int alt92=2;
-                int LA92_0 = input.LA(1);
+                int alt93=2;
+                int LA93_0 = input.LA(1);
 
-                if ( (LA92_0==DOT) ) {
-                    alt92=1;
+                if ( (LA93_0==DOT) ) {
+                    alt93=1;
                 }
 
 
-                switch (alt92) {
+                switch (alt93) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1309:13: id+= DOT id+= ID
+            	    // src/main/resources/org/drools/lang/DRL.g:1309:13: id+= DOT id+= ID
             	    {
             	    id=(Token)input.LT(1);
-            	    match(input,DOT,FOLLOW_DOT_in_data_type4503); if (failed) return retval;
+            	    match(input,DOT,FOLLOW_DOT_in_data_type4509); if (failed) return retval;
             	    if ( backtracking==0 ) stream_DOT.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
 
             	    id=(Token)input.LT(1);
-            	    match(input,ID,FOLLOW_ID_in_data_type4507); if (failed) return retval;
+            	    match(input,ID,FOLLOW_ID_in_data_type4513); if (failed) return retval;
             	    if ( backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
@@ -12696,36 +12580,36 @@
             	    break;
 
             	default :
-            	    break loop92;
+            	    break loop93;
                 }
             } while (true);
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1309:31: ( dimension_definition )*
-            loop93:
+            // src/main/resources/org/drools/lang/DRL.g:1309:31: ( dimension_definition )*
+            loop94:
             do {
-                int alt93=2;
-                int LA93_0 = input.LA(1);
+                int alt94=2;
+                int LA94_0 = input.LA(1);
 
-                if ( (LA93_0==LEFT_SQUARE) ) {
-                    alt93=1;
+                if ( (LA94_0==LEFT_SQUARE) ) {
+                    alt94=1;
                 }
 
 
-                switch (alt93) {
+                switch (alt94) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1309:31: dimension_definition
+            	    // src/main/resources/org/drools/lang/DRL.g:1309:31: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_data_type4512);
-            	    dimension_definition279=dimension_definition();
+            	    pushFollow(FOLLOW_dimension_definition_in_data_type4518);
+            	    dimension_definition280=dimension_definition();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_dimension_definition.add(dimension_definition279.getTree());
+            	    if ( backtracking==0 ) stream_dimension_definition.add(dimension_definition280.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop93;
+            	    break loop94;
                 }
             } while (true);
 
@@ -12734,7 +12618,7 @@
             }
 
             // AST REWRITE
-            // elements: dimension_definition, ID
+            // elements: ID, dimension_definition
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -12746,7 +12630,7 @@
             root_0 = (Object)adaptor.nil();
             // 1311:3: -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1311:6: ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
+                // src/main/resources/org/drools/lang/DRL.g:1311: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);
@@ -12759,7 +12643,7 @@
 
                 }
                 stream_ID.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1311:25: ( dimension_definition )*
+                // src/main/resources/org/drools/lang/DRL.g:1311:25: ( dimension_definition )*
                 while ( stream_dimension_definition.hasNext() ) {
                     adaptor.addChild(root_1, stream_dimension_definition.next());
 
@@ -12798,42 +12682,42 @@
     };
 
     // $ANTLR start dimension_definition
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1314:1: dimension_definition : LEFT_SQUARE RIGHT_SQUARE ;
+    // src/main/resources/org/drools/lang/DRL.g:1314: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_SQUARE280=null;
-        Token RIGHT_SQUARE281=null;
+        Token LEFT_SQUARE281=null;
+        Token RIGHT_SQUARE282=null;
 
-        Object LEFT_SQUARE280_tree=null;
-        Object RIGHT_SQUARE281_tree=null;
+        Object LEFT_SQUARE281_tree=null;
+        Object RIGHT_SQUARE282_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1315:2: ( LEFT_SQUARE RIGHT_SQUARE )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1315:4: LEFT_SQUARE RIGHT_SQUARE
+            // src/main/resources/org/drools/lang/DRL.g:1315:2: ( LEFT_SQUARE RIGHT_SQUARE )
+            // src/main/resources/org/drools/lang/DRL.g:1315:4: LEFT_SQUARE RIGHT_SQUARE
             {
             root_0 = (Object)adaptor.nil();
 
-            LEFT_SQUARE280=(Token)input.LT(1);
-            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dimension_definition4541); if (failed) return retval;
+            LEFT_SQUARE281=(Token)input.LT(1);
+            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dimension_definition4547); if (failed) return retval;
             if ( backtracking==0 ) {
-            LEFT_SQUARE280_tree = (Object)adaptor.create(LEFT_SQUARE280);
-            adaptor.addChild(root_0, LEFT_SQUARE280_tree);
+            LEFT_SQUARE281_tree = (Object)adaptor.create(LEFT_SQUARE281);
+            adaptor.addChild(root_0, LEFT_SQUARE281_tree);
             }
             if ( backtracking==0 ) {
-              	emit(LEFT_SQUARE280, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_SQUARE281, DroolsEditorType.SYMBOL);	
             }
-            RIGHT_SQUARE281=(Token)input.LT(1);
-            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dimension_definition4548); if (failed) return retval;
+            RIGHT_SQUARE282=(Token)input.LT(1);
+            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dimension_definition4554); if (failed) return retval;
             if ( backtracking==0 ) {
-            RIGHT_SQUARE281_tree = (Object)adaptor.create(RIGHT_SQUARE281);
-            adaptor.addChild(root_0, RIGHT_SQUARE281_tree);
+            RIGHT_SQUARE282_tree = (Object)adaptor.create(RIGHT_SQUARE282);
+            adaptor.addChild(root_0, RIGHT_SQUARE282_tree);
             }
             if ( backtracking==0 ) {
-              	emit(RIGHT_SQUARE281, DroolsEditorType.SYMBOL);	
+              	emit(RIGHT_SQUARE282, DroolsEditorType.SYMBOL);	
             }
 
             }
@@ -12861,64 +12745,64 @@
     };
 
     // $ANTLR start accessor_path
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1319:1: accessor_path : accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1319: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 DOT283=null;
-        accessor_element_return accessor_element282 = null;
+        Token DOT284=null;
+        accessor_element_return accessor_element283 = null;
 
-        accessor_element_return accessor_element284 = null;
+        accessor_element_return accessor_element285 = null;
 
 
-        Object DOT283_tree=null;
+        Object DOT284_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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1320:2: ( accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1320:4: accessor_element ( DOT accessor_element )*
+            // src/main/resources/org/drools/lang/DRL.g:1320:2: ( accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) )
+            // src/main/resources/org/drools/lang/DRL.g:1320:4: accessor_element ( DOT accessor_element )*
             {
-            pushFollow(FOLLOW_accessor_element_in_accessor_path4562);
-            accessor_element282=accessor_element();
+            pushFollow(FOLLOW_accessor_element_in_accessor_path4568);
+            accessor_element283=accessor_element();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) stream_accessor_element.add(accessor_element282.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1320:21: ( DOT accessor_element )*
-            loop94:
+            if ( backtracking==0 ) stream_accessor_element.add(accessor_element283.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:1320:21: ( DOT accessor_element )*
+            loop95:
             do {
-                int alt94=2;
-                int LA94_0 = input.LA(1);
+                int alt95=2;
+                int LA95_0 = input.LA(1);
 
-                if ( (LA94_0==DOT) ) {
-                    alt94=1;
+                if ( (LA95_0==DOT) ) {
+                    alt95=1;
                 }
 
 
-                switch (alt94) {
+                switch (alt95) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1320:23: DOT accessor_element
+            	    // src/main/resources/org/drools/lang/DRL.g:1320:23: DOT accessor_element
             	    {
-            	    DOT283=(Token)input.LT(1);
-            	    match(input,DOT,FOLLOW_DOT_in_accessor_path4566); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_DOT.add(DOT283);
+            	    DOT284=(Token)input.LT(1);
+            	    match(input,DOT,FOLLOW_DOT_in_accessor_path4572); if (failed) return retval;
+            	    if ( backtracking==0 ) stream_DOT.add(DOT284);
 
             	    if ( backtracking==0 ) {
-            	      	emit(DOT283, DroolsEditorType.IDENTIFIER);	
+            	      	emit(DOT284, DroolsEditorType.IDENTIFIER);	
             	    }
-            	    pushFollow(FOLLOW_accessor_element_in_accessor_path4570);
-            	    accessor_element284=accessor_element();
+            	    pushFollow(FOLLOW_accessor_element_in_accessor_path4576);
+            	    accessor_element285=accessor_element();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_accessor_element.add(accessor_element284.getTree());
+            	    if ( backtracking==0 ) stream_accessor_element.add(accessor_element285.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop94;
+            	    break loop95;
                 }
             } while (true);
 
@@ -12936,7 +12820,7 @@
             root_0 = (Object)adaptor.nil();
             // 1321:2: -> ^( VT_ACCESSOR_PATH ( accessor_element )+ )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1321:5: ^( VT_ACCESSOR_PATH ( accessor_element )+ )
+                // src/main/resources/org/drools/lang/DRL.g:1321: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);
@@ -12982,57 +12866,57 @@
     };
 
     // $ANTLR start accessor_element
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1324:1: accessor_element : ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1324: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 ID285=null;
-        square_chunk_return square_chunk286 = null;
+        Token ID286=null;
+        square_chunk_return square_chunk287 = null;
 
 
-        Object ID285_tree=null;
+        Object ID286_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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1325:2: ( ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1325:4: ID ( square_chunk )*
+            // src/main/resources/org/drools/lang/DRL.g:1325:2: ( ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) )
+            // src/main/resources/org/drools/lang/DRL.g:1325:4: ID ( square_chunk )*
             {
-            ID285=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_accessor_element4594); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID285);
+            ID286=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_accessor_element4600); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID286);
 
             if ( backtracking==0 ) {
-              	emit(ID285, DroolsEditorType.IDENTIFIER);	
+              	emit(ID286, DroolsEditorType.IDENTIFIER);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1326:3: ( square_chunk )*
-            loop95:
+            // src/main/resources/org/drools/lang/DRL.g:1326:3: ( square_chunk )*
+            loop96:
             do {
-                int alt95=2;
-                int LA95_0 = input.LA(1);
+                int alt96=2;
+                int LA96_0 = input.LA(1);
 
-                if ( (LA95_0==LEFT_SQUARE) ) {
-                    alt95=1;
+                if ( (LA96_0==LEFT_SQUARE) ) {
+                    alt96=1;
                 }
 
 
-                switch (alt95) {
+                switch (alt96) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1326:3: square_chunk
+            	    // src/main/resources/org/drools/lang/DRL.g:1326:3: square_chunk
             	    {
-            	    pushFollow(FOLLOW_square_chunk_in_accessor_element4600);
-            	    square_chunk286=square_chunk();
+            	    pushFollow(FOLLOW_square_chunk_in_accessor_element4606);
+            	    square_chunk287=square_chunk();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_square_chunk.add(square_chunk286.getTree());
+            	    if ( backtracking==0 ) stream_square_chunk.add(square_chunk287.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop95;
+            	    break loop96;
                 }
             } while (true);
 
@@ -13050,13 +12934,13 @@
             root_0 = (Object)adaptor.nil();
             // 1327:2: -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1327:5: ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
+                // src/main/resources/org/drools/lang/DRL.g:1327: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-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1327:30: ( square_chunk )*
+                // src/main/resources/org/drools/lang/DRL.g:1327:30: ( square_chunk )*
                 while ( stream_square_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_square_chunk.next());
 
@@ -13095,7 +12979,7 @@
     };
 
     // $ANTLR start rhs_chunk
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1330:1: rhs_chunk : rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1330: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);
@@ -13110,10 +12994,10 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1333:3: (rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1333:5: rc= rhs_chunk_data
+            // src/main/resources/org/drools/lang/DRL.g:1333:3: (rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] )
+            // src/main/resources/org/drools/lang/DRL.g:1333:5: rc= rhs_chunk_data
             {
-            pushFollow(FOLLOW_rhs_chunk_data_in_rhs_chunk4629);
+            pushFollow(FOLLOW_rhs_chunk_data_in_rhs_chunk4635);
             rc=rhs_chunk_data();
             _fsp--;
             if (failed) return retval;
@@ -13166,7 +13050,7 @@
     };
 
     // $ANTLR start rhs_chunk_data
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1337:1: rhs_chunk_data : THEN (any=~ END )* end1= END ( SEMICOLON )? ;
+    // src/main/resources/org/drools/lang/DRL.g:1337:1: rhs_chunk_data : THEN (any=~ END )* end1= 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);
@@ -13175,46 +13059,46 @@
 
         Token any=null;
         Token end1=null;
-        Token THEN287=null;
-        Token SEMICOLON288=null;
+        Token THEN288=null;
+        Token SEMICOLON289=null;
 
         Object any_tree=null;
         Object end1_tree=null;
-        Object THEN287_tree=null;
-        Object SEMICOLON288_tree=null;
+        Object THEN288_tree=null;
+        Object SEMICOLON289_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1338:2: ( THEN (any=~ END )* end1= END ( SEMICOLON )? )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1338:4: THEN (any=~ END )* end1= END ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:1338:2: ( THEN (any=~ END )* end1= END ( SEMICOLON )? )
+            // src/main/resources/org/drools/lang/DRL.g:1338:4: THEN (any=~ END )* end1= END ( SEMICOLON )?
             {
             root_0 = (Object)adaptor.nil();
 
-            THEN287=(Token)input.LT(1);
-            match(input,THEN,FOLLOW_THEN_in_rhs_chunk_data4648); if (failed) return retval;
+            THEN288=(Token)input.LT(1);
+            match(input,THEN,FOLLOW_THEN_in_rhs_chunk_data4654); if (failed) return retval;
             if ( backtracking==0 ) {
-            THEN287_tree = (Object)adaptor.create(THEN287);
-            adaptor.addChild(root_0, THEN287_tree);
+            THEN288_tree = (Object)adaptor.create(THEN288);
+            adaptor.addChild(root_0, THEN288_tree);
             }
             if ( backtracking==0 ) {
-              	if (THEN287.getText().equalsIgnoreCase("then")){
-              			emit(THEN287, DroolsEditorType.KEYWORD);
+              	if (THEN288.getText().equalsIgnoreCase("then")){
+              			emit(THEN288, DroolsEditorType.KEYWORD);
               			emit(Location.LOCATION_RHS);
               		}	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1343:4: (any=~ END )*
-            loop96:
+            // src/main/resources/org/drools/lang/DRL.g:1343:4: (any=~ END )*
+            loop97:
             do {
-                int alt96=2;
-                int LA96_0 = input.LA(1);
+                int alt97=2;
+                int LA97_0 = input.LA(1);
 
-                if ( ((LA96_0>=VT_COMPILATION_UNIT && LA96_0<=DOT_STAR)||(LA96_0>=STRING && LA96_0<=MULTI_LINE_COMMENT)) ) {
-                    alt96=1;
+                if ( ((LA97_0>=VT_COMPILATION_UNIT && LA97_0<=DOT_STAR)||(LA97_0>=STRING && LA97_0<=MULTI_LINE_COMMENT)) ) {
+                    alt97=1;
                 }
 
 
-                switch (alt96) {
+                switch (alt97) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1343:6: any=~ END
+            	    // src/main/resources/org/drools/lang/DRL.g:1343:6: any=~ END
             	    {
             	    any=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=DOT_STAR)||(input.LA(1)>=STRING && input.LA(1)<=MULTI_LINE_COMMENT) ) {
@@ -13226,7 +13110,7 @@
             	        if (backtracking>0) {failed=true; return retval;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_rhs_chunk_data4661);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_rhs_chunk_data4667);    throw mse;
             	    }
 
             	    if ( backtracking==0 ) {
@@ -13237,12 +13121,12 @@
             	    break;
 
             	default :
-            	    break loop96;
+            	    break loop97;
                 }
             } while (true);
 
             end1=(Token)input.LT(1);
-            match(input,END,FOLLOW_END_in_rhs_chunk_data4674); if (failed) return retval;
+            match(input,END,FOLLOW_END_in_rhs_chunk_data4680); if (failed) return retval;
             if ( backtracking==0 ) {
             end1_tree = (Object)adaptor.create(end1);
             adaptor.addChild(root_0, end1_tree);
@@ -13250,22 +13134,22 @@
             if ( backtracking==0 ) {
               	emit(end1, DroolsEditorType.KEYWORD);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1345:3: ( SEMICOLON )?
-            int alt97=2;
-            int LA97_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DRL.g:1345:3: ( SEMICOLON )?
+            int alt98=2;
+            int LA98_0 = input.LA(1);
 
-            if ( (LA97_0==SEMICOLON) ) {
-                alt97=1;
+            if ( (LA98_0==SEMICOLON) ) {
+                alt98=1;
             }
-            switch (alt97) {
+            switch (alt98) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1345:3: SEMICOLON
+                    // src/main/resources/org/drools/lang/DRL.g:1345:3: SEMICOLON
                     {
-                    SEMICOLON288=(Token)input.LT(1);
-                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_rhs_chunk_data4680); if (failed) return retval;
+                    SEMICOLON289=(Token)input.LT(1);
+                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_rhs_chunk_data4686); if (failed) return retval;
                     if ( backtracking==0 ) {
-                    SEMICOLON288_tree = (Object)adaptor.create(SEMICOLON288);
-                    adaptor.addChild(root_0, SEMICOLON288_tree);
+                    SEMICOLON289_tree = (Object)adaptor.create(SEMICOLON289);
+                    adaptor.addChild(root_0, SEMICOLON289_tree);
                     }
 
                     }
@@ -13274,7 +13158,7 @@
             }
 
             if ( backtracking==0 ) {
-              	emit(SEMICOLON288, DroolsEditorType.KEYWORD);	
+              	emit(SEMICOLON289, DroolsEditorType.KEYWORD);	
             }
 
             }
@@ -13302,7 +13186,7 @@
     };
 
     // $ANTLR start curly_chunk
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1348:1: curly_chunk : cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1348:1: curly_chunk : cc= curly_chunk_data[false] -> 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);
@@ -13317,10 +13201,10 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1351:3: (cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1351:5: cc= curly_chunk_data[false]
+            // src/main/resources/org/drools/lang/DRL.g:1351:3: (cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] )
+            // src/main/resources/org/drools/lang/DRL.g:1351:5: cc= curly_chunk_data[false]
             {
-            pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk4699);
+            pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk4705);
             cc=curly_chunk_data(false);
             _fsp--;
             if (failed) return retval;
@@ -13373,7 +13257,7 @@
     };
 
     // $ANTLR start curly_chunk_data
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1355:1: curly_chunk_data[boolean isRecursive] : lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY ;
+    // src/main/resources/org/drools/lang/DRL.g:1355:1: curly_chunk_data[boolean isRecursive] : lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY ;
     public final curly_chunk_data_return curly_chunk_data(boolean isRecursive) throws RecognitionException {
         curly_chunk_data_return retval = new curly_chunk_data_return();
         retval.start = input.LT(1);
@@ -13383,7 +13267,7 @@
         Token lc1=null;
         Token any=null;
         Token rc1=null;
-        curly_chunk_data_return curly_chunk_data289 = null;
+        curly_chunk_data_return curly_chunk_data290 = null;
 
 
         Object lc1_tree=null;
@@ -13391,13 +13275,13 @@
         Object rc1_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1356:2: (lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1356:4: lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY
+            // src/main/resources/org/drools/lang/DRL.g:1356:2: (lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY )
+            // src/main/resources/org/drools/lang/DRL.g:1356:4: lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY
             {
             root_0 = (Object)adaptor.nil();
 
             lc1=(Token)input.LT(1);
-            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk_data4722); if (failed) return retval;
+            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk_data4728); if (failed) return retval;
             if ( backtracking==0 ) {
             lc1_tree = (Object)adaptor.create(lc1);
             adaptor.addChild(root_0, lc1_tree);
@@ -13410,23 +13294,23 @@
               			}	
               		
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1363:4: (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )*
-            loop98:
+            // src/main/resources/org/drools/lang/DRL.g:1363:4: (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )*
+            loop99:
             do {
-                int alt98=3;
-                int LA98_0 = input.LA(1);
+                int alt99=3;
+                int LA99_0 = input.LA(1);
 
-                if ( ((LA98_0>=VT_COMPILATION_UNIT && LA98_0<=THEN)||(LA98_0>=MISC && LA98_0<=MULTI_LINE_COMMENT)) ) {
-                    alt98=1;
+                if ( ((LA99_0>=VT_COMPILATION_UNIT && LA99_0<=THEN)||(LA99_0>=MISC && LA99_0<=MULTI_LINE_COMMENT)) ) {
+                    alt99=1;
                 }
-                else if ( (LA98_0==LEFT_CURLY) ) {
-                    alt98=2;
+                else if ( (LA99_0==LEFT_CURLY) ) {
+                    alt99=2;
                 }
 
 
-                switch (alt98) {
+                switch (alt99) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1363:5: any=~ ( LEFT_CURLY | RIGHT_CURLY )
+            	    // src/main/resources/org/drools/lang/DRL.g:1363:5: any=~ ( LEFT_CURLY | RIGHT_CURLY )
             	    {
             	    any=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=THEN)||(input.LA(1)>=MISC && input.LA(1)<=MULTI_LINE_COMMENT) ) {
@@ -13438,7 +13322,7 @@
             	        if (backtracking>0) {failed=true; return retval;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_curly_chunk_data4734);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_curly_chunk_data4740);    throw mse;
             	    }
 
             	    if ( backtracking==0 ) {
@@ -13448,24 +13332,24 @@
             	    }
             	    break;
             	case 2 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1363:87: curly_chunk_data[true]
+            	    // src/main/resources/org/drools/lang/DRL.g:1363:87: curly_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk_data4750);
-            	    curly_chunk_data289=curly_chunk_data(true);
+            	    pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk_data4756);
+            	    curly_chunk_data290=curly_chunk_data(true);
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, curly_chunk_data289.getTree());
+            	    if ( backtracking==0 ) adaptor.addChild(root_0, curly_chunk_data290.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop98;
+            	    break loop99;
                 }
             } while (true);
 
             rc1=(Token)input.LT(1);
-            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk_data4761); if (failed) return retval;
+            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk_data4767); if (failed) return retval;
             if ( backtracking==0 ) {
             rc1_tree = (Object)adaptor.create(rc1);
             adaptor.addChild(root_0, rc1_tree);
@@ -13504,7 +13388,7 @@
     };
 
     // $ANTLR start paren_chunk
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1373:1: paren_chunk : pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1373:1: paren_chunk : pc= paren_chunk_data[false] -> 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);
@@ -13519,10 +13403,10 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1376:3: (pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1376:5: pc= paren_chunk_data[false]
+            // src/main/resources/org/drools/lang/DRL.g:1376:3: (pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] )
+            // src/main/resources/org/drools/lang/DRL.g:1376:5: pc= paren_chunk_data[false]
             {
-            pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk4782);
+            pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk4788);
             pc=paren_chunk_data(false);
             _fsp--;
             if (failed) return retval;
@@ -13575,7 +13459,7 @@
     };
 
     // $ANTLR start paren_chunk_data
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1380:1: paren_chunk_data[boolean isRecursive] : lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN ;
+    // src/main/resources/org/drools/lang/DRL.g:1380:1: paren_chunk_data[boolean isRecursive] : lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN ;
     public final paren_chunk_data_return paren_chunk_data(boolean isRecursive) throws RecognitionException {
         paren_chunk_data_return retval = new paren_chunk_data_return();
         retval.start = input.LT(1);
@@ -13585,7 +13469,7 @@
         Token lp1=null;
         Token any=null;
         Token rp1=null;
-        paren_chunk_data_return paren_chunk_data290 = null;
+        paren_chunk_data_return paren_chunk_data291 = null;
 
 
         Object lp1_tree=null;
@@ -13593,13 +13477,13 @@
         Object rp1_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1381:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1381:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN
+            // src/main/resources/org/drools/lang/DRL.g:1381:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN )
+            // src/main/resources/org/drools/lang/DRL.g:1381:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN
             {
             root_0 = (Object)adaptor.nil();
 
             lp1=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk_data4806); if (failed) return retval;
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk_data4812); if (failed) return retval;
             if ( backtracking==0 ) {
             lp1_tree = (Object)adaptor.create(lp1);
             adaptor.addChild(root_0, lp1_tree);
@@ -13612,23 +13496,23 @@
               			}	
               		
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1388:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )*
-            loop99:
+            // src/main/resources/org/drools/lang/DRL.g:1388:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )*
+            loop100:
             do {
-                int alt99=3;
-                int LA99_0 = input.LA(1);
+                int alt100=3;
+                int LA100_0 = input.LA(1);
 
-                if ( ((LA99_0>=VT_COMPILATION_UNIT && LA99_0<=STRING)||LA99_0==COMMA||(LA99_0>=AT && LA99_0<=MULTI_LINE_COMMENT)) ) {
-                    alt99=1;
+                if ( ((LA100_0>=VT_COMPILATION_UNIT && LA100_0<=STRING)||LA100_0==COMMA||(LA100_0>=AT && LA100_0<=MULTI_LINE_COMMENT)) ) {
+                    alt100=1;
                 }
-                else if ( (LA99_0==LEFT_PAREN) ) {
-                    alt99=2;
+                else if ( (LA100_0==LEFT_PAREN) ) {
+                    alt100=2;
                 }
 
 
-                switch (alt99) {
+                switch (alt100) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1388:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
+            	    // src/main/resources/org/drools/lang/DRL.g:1388:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
             	    {
             	    any=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=STRING)||input.LA(1)==COMMA||(input.LA(1)>=AT && input.LA(1)<=MULTI_LINE_COMMENT) ) {
@@ -13640,7 +13524,7 @@
             	        if (backtracking>0) {failed=true; return retval;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_paren_chunk_data4818);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_paren_chunk_data4824);    throw mse;
             	    }
 
             	    if ( backtracking==0 ) {
@@ -13650,24 +13534,24 @@
             	    }
             	    break;
             	case 2 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1388:87: paren_chunk_data[true]
+            	    // src/main/resources/org/drools/lang/DRL.g:1388:87: paren_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk_data4834);
-            	    paren_chunk_data290=paren_chunk_data(true);
+            	    pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk_data4840);
+            	    paren_chunk_data291=paren_chunk_data(true);
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, paren_chunk_data290.getTree());
+            	    if ( backtracking==0 ) adaptor.addChild(root_0, paren_chunk_data291.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop99;
+            	    break loop100;
                 }
             } while (true);
 
             rp1=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk_data4845); if (failed) return retval;
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk_data4851); if (failed) return retval;
             if ( backtracking==0 ) {
             rp1_tree = (Object)adaptor.create(rp1);
             adaptor.addChild(root_0, rp1_tree);
@@ -13706,7 +13590,7 @@
     };
 
     // $ANTLR start square_chunk
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1398:1: square_chunk : sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1398:1: square_chunk : sc= square_chunk_data[false] -> 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);
@@ -13721,10 +13605,10 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1401:3: (sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1401:5: sc= square_chunk_data[false]
+            // src/main/resources/org/drools/lang/DRL.g:1401:3: (sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] )
+            // src/main/resources/org/drools/lang/DRL.g:1401:5: sc= square_chunk_data[false]
             {
-            pushFollow(FOLLOW_square_chunk_data_in_square_chunk4866);
+            pushFollow(FOLLOW_square_chunk_data_in_square_chunk4872);
             sc=square_chunk_data(false);
             _fsp--;
             if (failed) return retval;
@@ -13777,7 +13661,7 @@
     };
 
     // $ANTLR start square_chunk_data
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1405:1: square_chunk_data[boolean isRecursive] : ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE ;
+    // src/main/resources/org/drools/lang/DRL.g:1405:1: square_chunk_data[boolean isRecursive] : ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE ;
     public final square_chunk_data_return square_chunk_data(boolean isRecursive) throws RecognitionException {
         square_chunk_data_return retval = new square_chunk_data_return();
         retval.start = input.LT(1);
@@ -13787,7 +13671,7 @@
         Token ls1=null;
         Token any=null;
         Token rs1=null;
-        square_chunk_data_return square_chunk_data291 = null;
+        square_chunk_data_return square_chunk_data292 = null;
 
 
         Object ls1_tree=null;
@@ -13795,13 +13679,13 @@
         Object rs1_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1406:2: (ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1406:4: ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE
+            // src/main/resources/org/drools/lang/DRL.g:1406:2: (ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE )
+            // src/main/resources/org/drools/lang/DRL.g:1406:4: ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE
             {
             root_0 = (Object)adaptor.nil();
 
             ls1=(Token)input.LT(1);
-            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk_data4889); if (failed) return retval;
+            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk_data4895); if (failed) return retval;
             if ( backtracking==0 ) {
             ls1_tree = (Object)adaptor.create(ls1);
             adaptor.addChild(root_0, ls1_tree);
@@ -13814,23 +13698,23 @@
               			}	
               		
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1413:4: (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )*
-            loop100:
+            // src/main/resources/org/drools/lang/DRL.g:1413:4: (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )*
+            loop101:
             do {
-                int alt100=3;
-                int LA100_0 = input.LA(1);
+                int alt101=3;
+                int LA101_0 = input.LA(1);
 
-                if ( ((LA100_0>=VT_COMPILATION_UNIT && LA100_0<=NULL)||(LA100_0>=THEN && LA100_0<=MULTI_LINE_COMMENT)) ) {
-                    alt100=1;
+                if ( ((LA101_0>=VT_COMPILATION_UNIT && LA101_0<=NULL)||(LA101_0>=THEN && LA101_0<=MULTI_LINE_COMMENT)) ) {
+                    alt101=1;
                 }
-                else if ( (LA100_0==LEFT_SQUARE) ) {
-                    alt100=2;
+                else if ( (LA101_0==LEFT_SQUARE) ) {
+                    alt101=2;
                 }
 
 
-                switch (alt100) {
+                switch (alt101) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1413:5: any=~ ( LEFT_SQUARE | RIGHT_SQUARE )
+            	    // src/main/resources/org/drools/lang/DRL.g:1413:5: any=~ ( LEFT_SQUARE | RIGHT_SQUARE )
             	    {
             	    any=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=NULL)||(input.LA(1)>=THEN && input.LA(1)<=MULTI_LINE_COMMENT) ) {
@@ -13842,7 +13726,7 @@
             	        if (backtracking>0) {failed=true; return retval;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_square_chunk_data4901);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_square_chunk_data4907);    throw mse;
             	    }
 
             	    if ( backtracking==0 ) {
@@ -13852,24 +13736,24 @@
             	    }
             	    break;
             	case 2 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1413:88: square_chunk_data[true]
+            	    // src/main/resources/org/drools/lang/DRL.g:1413:88: square_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_square_chunk_data_in_square_chunk_data4916);
-            	    square_chunk_data291=square_chunk_data(true);
+            	    pushFollow(FOLLOW_square_chunk_data_in_square_chunk_data4922);
+            	    square_chunk_data292=square_chunk_data(true);
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, square_chunk_data291.getTree());
+            	    if ( backtracking==0 ) adaptor.addChild(root_0, square_chunk_data292.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop100;
+            	    break loop101;
                 }
             } while (true);
 
             rs1=(Token)input.LT(1);
-            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk_data4927); if (failed) return retval;
+            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk_data4933); if (failed) return retval;
             if ( backtracking==0 ) {
             rs1_tree = (Object)adaptor.create(rs1);
             adaptor.addChild(root_0, rs1_tree);
@@ -13908,7 +13792,7 @@
     };
 
     // $ANTLR start lock_on_active_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1423:1: lock_on_active_key : {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1423:1: lock_on_active_key : {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= 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);
@@ -13926,38 +13810,38 @@
         Object id2_tree=null;
         Object mis2_tree=null;
         Object id3_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
 
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1426:3: ({...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1426:5: {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID
+            // src/main/resources/org/drools/lang/DRL.g:1426:3: ({...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] )
+            // src/main/resources/org/drools/lang/DRL.g:1426:5: {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))) ) {
                 if (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))");
             }
             id1=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_lock_on_active_key4951); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_lock_on_active_key4957); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id1);
 
             mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_lock_on_active_key4955); if (failed) return retval;
+            match(input,MISC,FOLLOW_MISC_in_lock_on_active_key4961); if (failed) return retval;
             if ( backtracking==0 ) stream_MISC.add(mis1);
 
             id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_lock_on_active_key4959); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_lock_on_active_key4965); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id2);
 
             mis2=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_lock_on_active_key4963); if (failed) return retval;
+            match(input,MISC,FOLLOW_MISC_in_lock_on_active_key4969); if (failed) return retval;
             if ( backtracking==0 ) stream_MISC.add(mis2);
 
             id3=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_lock_on_active_key4967); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_lock_on_active_key4973); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id3);
 
             if ( backtracking==0 ) {
@@ -14015,7 +13899,7 @@
     };
 
     // $ANTLR start date_effective_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1435:1: date_effective_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1435:1: date_effective_key : {...}? =>id1= ID mis1= MISC id2= 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);
@@ -14029,30 +13913,30 @@
         Object id1_tree=null;
         Object mis1_tree=null;
         Object id2_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
 
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1438:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1438:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // src/main/resources/org/drools/lang/DRL.g:1438:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] )
+            // src/main/resources/org/drools/lang/DRL.g:1438:5: {...}? =>id1= ID mis1= MISC id2= 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))");
             }
             id1=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_date_effective_key4999); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_date_effective_key5005); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id1);
 
             mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_date_effective_key5003); if (failed) return retval;
+            match(input,MISC,FOLLOW_MISC_in_date_effective_key5009); if (failed) return retval;
             if ( backtracking==0 ) stream_MISC.add(mis1);
 
             id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_date_effective_key5007); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_date_effective_key5013); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id2);
 
             if ( backtracking==0 ) {
@@ -14108,7 +13992,7 @@
     };
 
     // $ANTLR start date_expires_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1445:1: date_expires_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1445:1: date_expires_key : {...}? =>id1= ID mis1= MISC id2= 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);
@@ -14122,30 +14006,30 @@
         Object id1_tree=null;
         Object mis1_tree=null;
         Object id2_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
 
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1448:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1448:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // src/main/resources/org/drools/lang/DRL.g:1448:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] )
+            // src/main/resources/org/drools/lang/DRL.g:1448:5: {...}? =>id1= ID mis1= MISC id2= 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))");
             }
             id1=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_date_expires_key5039); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_date_expires_key5045); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id1);
 
             mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_date_expires_key5043); if (failed) return retval;
+            match(input,MISC,FOLLOW_MISC_in_date_expires_key5049); if (failed) return retval;
             if ( backtracking==0 ) stream_MISC.add(mis1);
 
             id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_date_expires_key5047); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_date_expires_key5053); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id2);
 
             if ( backtracking==0 ) {
@@ -14201,7 +14085,7 @@
     };
 
     // $ANTLR start no_loop_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1455:1: no_loop_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1455:1: no_loop_key : {...}? =>id1= ID mis1= MISC id2= 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);
@@ -14215,30 +14099,30 @@
         Object id1_tree=null;
         Object mis1_tree=null;
         Object id2_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
 
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1458:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1458:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // src/main/resources/org/drools/lang/DRL.g:1458:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] )
+            // src/main/resources/org/drools/lang/DRL.g:1458:5: {...}? =>id1= ID mis1= MISC id2= 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))");
             }
             id1=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_no_loop_key5079); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_no_loop_key5085); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id1);
 
             mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_no_loop_key5083); if (failed) return retval;
+            match(input,MISC,FOLLOW_MISC_in_no_loop_key5089); if (failed) return retval;
             if ( backtracking==0 ) stream_MISC.add(mis1);
 
             id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_no_loop_key5087); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_no_loop_key5093); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id2);
 
             if ( backtracking==0 ) {
@@ -14294,7 +14178,7 @@
     };
 
     // $ANTLR start auto_focus_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1465:1: auto_focus_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1465:1: auto_focus_key : {...}? =>id1= ID mis1= MISC id2= 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);
@@ -14308,30 +14192,30 @@
         Object id1_tree=null;
         Object mis1_tree=null;
         Object id2_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
 
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1468:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1468:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // src/main/resources/org/drools/lang/DRL.g:1468:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] )
+            // src/main/resources/org/drools/lang/DRL.g:1468:5: {...}? =>id1= ID mis1= MISC id2= 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))");
             }
             id1=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_auto_focus_key5119); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_auto_focus_key5125); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id1);
 
             mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_auto_focus_key5123); if (failed) return retval;
+            match(input,MISC,FOLLOW_MISC_in_auto_focus_key5129); if (failed) return retval;
             if ( backtracking==0 ) stream_MISC.add(mis1);
 
             id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_auto_focus_key5127); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_auto_focus_key5133); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id2);
 
             if ( backtracking==0 ) {
@@ -14387,7 +14271,7 @@
     };
 
     // $ANTLR start activation_group_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1475:1: activation_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1475:1: activation_group_key : {...}? =>id1= ID mis1= MISC id2= 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);
@@ -14401,30 +14285,30 @@
         Object id1_tree=null;
         Object mis1_tree=null;
         Object id2_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
 
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1478:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1478:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // src/main/resources/org/drools/lang/DRL.g:1478:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] )
+            // src/main/resources/org/drools/lang/DRL.g:1478:5: {...}? =>id1= ID mis1= MISC id2= 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))");
             }
             id1=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_activation_group_key5159); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_activation_group_key5165); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id1);
 
             mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_activation_group_key5163); if (failed) return retval;
+            match(input,MISC,FOLLOW_MISC_in_activation_group_key5169); if (failed) return retval;
             if ( backtracking==0 ) stream_MISC.add(mis1);
 
             id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_activation_group_key5167); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_activation_group_key5173); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id2);
 
             if ( backtracking==0 ) {
@@ -14480,7 +14364,7 @@
     };
 
     // $ANTLR start agenda_group_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1485:1: agenda_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1485:1: agenda_group_key : {...}? =>id1= ID mis1= MISC id2= 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);
@@ -14494,30 +14378,30 @@
         Object id1_tree=null;
         Object mis1_tree=null;
         Object id2_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
 
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1488:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1488:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // src/main/resources/org/drools/lang/DRL.g:1488:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] )
+            // src/main/resources/org/drools/lang/DRL.g:1488:5: {...}? =>id1= ID mis1= MISC id2= 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))");
             }
             id1=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_agenda_group_key5199); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_agenda_group_key5205); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id1);
 
             mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_agenda_group_key5203); if (failed) return retval;
+            match(input,MISC,FOLLOW_MISC_in_agenda_group_key5209); if (failed) return retval;
             if ( backtracking==0 ) stream_MISC.add(mis1);
 
             id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_agenda_group_key5207); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_agenda_group_key5213); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id2);
 
             if ( backtracking==0 ) {
@@ -14573,7 +14457,7 @@
     };
 
     // $ANTLR start ruleflow_group_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1495:1: ruleflow_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1495:1: ruleflow_group_key : {...}? =>id1= ID mis1= MISC id2= 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);
@@ -14587,30 +14471,30 @@
         Object id1_tree=null;
         Object mis1_tree=null;
         Object id2_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
 
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1498:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1498:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // src/main/resources/org/drools/lang/DRL.g:1498:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] )
+            // src/main/resources/org/drools/lang/DRL.g:1498:5: {...}? =>id1= ID mis1= MISC id2= 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))");
             }
             id1=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_ruleflow_group_key5239); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_ruleflow_group_key5245); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id1);
 
             mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_ruleflow_group_key5243); if (failed) return retval;
+            match(input,MISC,FOLLOW_MISC_in_ruleflow_group_key5249); if (failed) return retval;
             if ( backtracking==0 ) stream_MISC.add(mis1);
 
             id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_ruleflow_group_key5247); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_ruleflow_group_key5253); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id2);
 
             if ( backtracking==0 ) {
@@ -14666,7 +14550,7 @@
     };
 
     // $ANTLR start entry_point_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1505:1: entry_point_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1505:1: entry_point_key : {...}? =>id1= ID mis1= MISC id2= 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);
@@ -14680,30 +14564,30 @@
         Object id1_tree=null;
         Object mis1_tree=null;
         Object id2_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
 
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1508:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1508:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // src/main/resources/org/drools/lang/DRL.g:1508:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] )
+            // src/main/resources/org/drools/lang/DRL.g:1508:5: {...}? =>id1= ID mis1= MISC id2= 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))");
             }
             id1=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_entry_point_key5279); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_entry_point_key5285); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id1);
 
             mis1=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_entry_point_key5283); if (failed) return retval;
+            match(input,MISC,FOLLOW_MISC_in_entry_point_key5289); if (failed) return retval;
             if ( backtracking==0 ) stream_MISC.add(mis1);
 
             id2=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_entry_point_key5287); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_entry_point_key5293); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id2);
 
             if ( backtracking==0 ) {
@@ -14759,7 +14643,7 @@
     };
 
     // $ANTLR start duration_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1515:1: duration_key : {...}? =>id= ID -> VK_DURATION[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1515: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);
@@ -14772,15 +14656,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1516:2: ({...}? =>id= ID -> VK_DURATION[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1516:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1516:2: ({...}? =>id= ID -> VK_DURATION[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1516: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_key5316); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_duration_key5322); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -14831,7 +14715,7 @@
     };
 
     // $ANTLR start package_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1521:1: package_key : {...}? =>id= ID -> VK_PACKAGE[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1521: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);
@@ -14844,15 +14728,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1522:2: ({...}? =>id= ID -> VK_PACKAGE[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1522:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1522:2: ({...}? =>id= ID -> VK_PACKAGE[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1522: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_key5343); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_package_key5349); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -14903,7 +14787,7 @@
     };
 
     // $ANTLR start import_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1527:1: import_key : {...}? =>id= ID -> VK_IMPORT[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1527: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);
@@ -14916,15 +14800,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1528:2: ({...}? =>id= ID -> VK_IMPORT[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1528:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1528:2: ({...}? =>id= ID -> VK_IMPORT[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1528: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_key5370); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_import_key5376); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -14975,7 +14859,7 @@
     };
 
     // $ANTLR start dialect_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1533:1: dialect_key : {...}? =>id= ID -> VK_DIALECT[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1533: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);
@@ -14988,15 +14872,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1534:2: ({...}? =>id= ID -> VK_DIALECT[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1534:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1534:2: ({...}? =>id= ID -> VK_DIALECT[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1534: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_key5397); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_dialect_key5403); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -15047,7 +14931,7 @@
     };
 
     // $ANTLR start salience_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1539:1: salience_key : {...}? =>id= ID -> VK_SALIENCE[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1539: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);
@@ -15060,15 +14944,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1540:2: ({...}? =>id= ID -> VK_SALIENCE[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1540:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1540:2: ({...}? =>id= ID -> VK_SALIENCE[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1540: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_key5424); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_salience_key5430); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -15119,7 +15003,7 @@
     };
 
     // $ANTLR start enabled_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1545:1: enabled_key : {...}? =>id= ID -> VK_ENABLED[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1545: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);
@@ -15132,15 +15016,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1546:2: ({...}? =>id= ID -> VK_ENABLED[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1546:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1546:2: ({...}? =>id= ID -> VK_ENABLED[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1546: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_key5451); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_enabled_key5457); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -15191,7 +15075,7 @@
     };
 
     // $ANTLR start attributes_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1551:1: attributes_key : {...}? =>id= ID -> VK_ATTRIBUTES[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1551: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);
@@ -15204,15 +15088,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1552:2: ({...}? =>id= ID -> VK_ATTRIBUTES[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1552:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1552:2: ({...}? =>id= ID -> VK_ATTRIBUTES[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1552: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_key5478); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_attributes_key5484); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -15263,7 +15147,7 @@
     };
 
     // $ANTLR start rule_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1557:1: rule_key : {...}? =>id= ID -> VK_RULE[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1557: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);
@@ -15276,15 +15160,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1558:2: ({...}? =>id= ID -> VK_RULE[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1558:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1558:2: ({...}? =>id= ID -> VK_RULE[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1558: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_key5505); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_rule_key5511); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -15335,7 +15219,7 @@
     };
 
     // $ANTLR start template_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1563:1: template_key : {...}? =>id= ID -> VK_TEMPLATE[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1563: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);
@@ -15348,15 +15232,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1564:2: ({...}? =>id= ID -> VK_TEMPLATE[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1564:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1564:2: ({...}? =>id= ID -> VK_TEMPLATE[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1564: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_key5532); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_template_key5538); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -15407,7 +15291,7 @@
     };
 
     // $ANTLR start query_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1569:1: query_key : {...}? =>id= ID -> VK_QUERY[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1569: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);
@@ -15420,15 +15304,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1570:2: ({...}? =>id= ID -> VK_QUERY[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1570:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1570:2: ({...}? =>id= ID -> VK_QUERY[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1570: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_key5559); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_query_key5565); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -15479,7 +15363,7 @@
     };
 
     // $ANTLR start declare_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1575:1: declare_key : {...}? =>id= ID -> VK_DECLARE[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1575: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);
@@ -15492,15 +15376,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1576:2: ({...}? =>id= ID -> VK_DECLARE[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1576:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1576:2: ({...}? =>id= ID -> VK_DECLARE[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1576: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_key5586); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_declare_key5592); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -15551,7 +15435,7 @@
     };
 
     // $ANTLR start function_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1581:1: function_key : {...}? =>id= ID -> VK_FUNCTION[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1581: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);
@@ -15564,15 +15448,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1582:2: ({...}? =>id= ID -> VK_FUNCTION[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1582:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1582:2: ({...}? =>id= ID -> VK_FUNCTION[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1582: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_key5613); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_function_key5619); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -15623,7 +15507,7 @@
     };
 
     // $ANTLR start global_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1587:1: global_key : {...}? =>id= ID -> VK_GLOBAL[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1587: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);
@@ -15636,15 +15520,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1588:2: ({...}? =>id= ID -> VK_GLOBAL[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1588:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1588:2: ({...}? =>id= ID -> VK_GLOBAL[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1588: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_key5640); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_global_key5646); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -15695,7 +15579,7 @@
     };
 
     // $ANTLR start eval_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1593:1: eval_key : {...}? =>id= ID -> VK_EVAL[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1593: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);
@@ -15708,15 +15592,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1594:2: ({...}? =>id= ID -> VK_EVAL[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1594:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1594:2: ({...}? =>id= ID -> VK_EVAL[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1594: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_key5667); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_eval_key5673); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -15767,7 +15651,7 @@
     };
 
     // $ANTLR start contains_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1599:1: contains_key : {...}? =>id= ID -> VK_CONTAINS[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1599: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);
@@ -15780,15 +15664,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1600:2: ({...}? =>id= ID -> VK_CONTAINS[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1600:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1600:2: ({...}? =>id= ID -> VK_CONTAINS[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1600: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_key5694); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_contains_key5700); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -15839,7 +15723,7 @@
     };
 
     // $ANTLR start matches_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1605:1: matches_key : {...}? =>id= ID -> VK_MATCHES[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1605: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);
@@ -15852,15 +15736,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1606:2: ({...}? =>id= ID -> VK_MATCHES[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1606:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1606:2: ({...}? =>id= ID -> VK_MATCHES[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1606: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_key5721); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_matches_key5727); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -15911,7 +15795,7 @@
     };
 
     // $ANTLR start excludes_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1611:1: excludes_key : {...}? =>id= ID -> VK_EXCLUDES[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1611: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);
@@ -15924,15 +15808,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1612:2: ({...}? =>id= ID -> VK_EXCLUDES[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1612:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1612:2: ({...}? =>id= ID -> VK_EXCLUDES[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1612: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_key5748); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_excludes_key5754); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -15983,7 +15867,7 @@
     };
 
     // $ANTLR start soundslike_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1617:1: soundslike_key : {...}? =>id= ID -> VK_SOUNDSLIKE[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1617: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);
@@ -15996,15 +15880,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1618:2: ({...}? =>id= ID -> VK_SOUNDSLIKE[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1618:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1618:2: ({...}? =>id= ID -> VK_SOUNDSLIKE[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1618: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_key5775); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_soundslike_key5781); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -16055,7 +15939,7 @@
     };
 
     // $ANTLR start memberof_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1623:1: memberof_key : {...}? =>id= ID -> VK_MEMBEROF[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1623: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);
@@ -16068,15 +15952,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1624:2: ({...}? =>id= ID -> VK_MEMBEROF[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1624:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1624:2: ({...}? =>id= ID -> VK_MEMBEROF[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1624: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_key5802); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_memberof_key5808); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -16127,7 +16011,7 @@
     };
 
     // $ANTLR start not_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1629:1: not_key : {...}? =>id= ID -> VK_NOT[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1629: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);
@@ -16140,15 +16024,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1630:2: ({...}? =>id= ID -> VK_NOT[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1630:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1630:2: ({...}? =>id= ID -> VK_NOT[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1630: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_key5829); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_not_key5835); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -16199,7 +16083,7 @@
     };
 
     // $ANTLR start in_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1635:1: in_key : {...}? =>id= ID -> VK_IN[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1635: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);
@@ -16212,15 +16096,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1636:2: ({...}? =>id= ID -> VK_IN[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1636:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1636:2: ({...}? =>id= ID -> VK_IN[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1636: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_key5856); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_in_key5862); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -16271,7 +16155,7 @@
     };
 
     // $ANTLR start or_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1641:1: or_key : {...}? =>id= ID -> VK_OR[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1641: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);
@@ -16284,15 +16168,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1642:2: ({...}? =>id= ID -> VK_OR[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1642:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1642:2: ({...}? =>id= ID -> VK_OR[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1642: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_key5883); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_or_key5889); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -16343,7 +16227,7 @@
     };
 
     // $ANTLR start and_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1647:1: and_key : {...}? =>id= ID -> VK_AND[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1647: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);
@@ -16356,15 +16240,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1648:2: ({...}? =>id= ID -> VK_AND[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1648:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1648:2: ({...}? =>id= ID -> VK_AND[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1648: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_key5910); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_and_key5916); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -16415,7 +16299,7 @@
     };
 
     // $ANTLR start exists_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1653:1: exists_key : {...}? =>id= ID -> VK_EXISTS[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1653: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);
@@ -16428,15 +16312,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1654:2: ({...}? =>id= ID -> VK_EXISTS[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1654:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1654:2: ({...}? =>id= ID -> VK_EXISTS[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1654: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_key5937); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_exists_key5943); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -16487,7 +16371,7 @@
     };
 
     // $ANTLR start forall_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1659:1: forall_key : {...}? =>id= ID -> VK_FORALL[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1659: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);
@@ -16500,15 +16384,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1660:2: ({...}? =>id= ID -> VK_FORALL[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1660:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1660:2: ({...}? =>id= ID -> VK_FORALL[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1660: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_key5964); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_forall_key5970); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -16559,7 +16443,7 @@
     };
 
     // $ANTLR start action_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1665:1: action_key : {...}? =>id= ID -> VK_ACTION[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1665: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);
@@ -16572,15 +16456,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1666:2: ({...}? =>id= ID -> VK_ACTION[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1666:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1666:2: ({...}? =>id= ID -> VK_ACTION[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1666: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_key5991); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_action_key5997); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -16631,7 +16515,7 @@
     };
 
     // $ANTLR start reverse_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1671:1: reverse_key : {...}? =>id= ID -> VK_REVERSE[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1671: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);
@@ -16644,15 +16528,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1672:2: ({...}? =>id= ID -> VK_REVERSE[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1672:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1672:2: ({...}? =>id= ID -> VK_REVERSE[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1672: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_key6018); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_reverse_key6024); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -16703,7 +16587,7 @@
     };
 
     // $ANTLR start result_key
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1677:1: result_key : {...}? =>id= ID -> VK_RESULT[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1677: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);
@@ -16716,15 +16600,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1678:2: ({...}? =>id= ID -> VK_RESULT[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1678:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1678:2: ({...}? =>id= ID -> VK_RESULT[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1678: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_key6045); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_result_key6051); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
             if ( backtracking==0 ) {
@@ -16771,11 +16655,11 @@
 
     // $ANTLR start synpred1
     public final void synpred1_fragment() throws RecognitionException {   
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:816:5: ( LEFT_PAREN or_key )
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:816:6: LEFT_PAREN or_key
+        // src/main/resources/org/drools/lang/DRL.g:816:5: ( LEFT_PAREN or_key )
+        // src/main/resources/org/drools/lang/DRL.g:816:6: LEFT_PAREN or_key
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred12039); if (failed) return ;
-        pushFollow(FOLLOW_or_key_in_synpred12041);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred12045); if (failed) return ;
+        pushFollow(FOLLOW_or_key_in_synpred12047);
         or_key();
         _fsp--;
         if (failed) return ;
@@ -16786,28 +16670,28 @@
 
     // $ANTLR start synpred2
     public final void synpred2_fragment() throws RecognitionException {   
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:824:5: ( or_key | DOUBLE_PIPE )
-        int alt101=2;
-        int LA101_0 = input.LA(1);
+        // src/main/resources/org/drools/lang/DRL.g:824:5: ( or_key | DOUBLE_PIPE )
+        int alt102=2;
+        int LA102_0 = input.LA(1);
 
-        if ( (LA101_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.OR)))) {
-            alt101=1;
+        if ( (LA102_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.OR)))) {
+            alt102=1;
         }
-        else if ( (LA101_0==DOUBLE_PIPE) ) {
-            alt101=2;
+        else if ( (LA102_0==DOUBLE_PIPE) ) {
+            alt102=2;
         }
         else {
             if (backtracking>0) {failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("824:5: synpred2 : ( or_key | DOUBLE_PIPE );", 101, 0, input);
+                new NoViableAltException("824:5: synpred2 : ( or_key | DOUBLE_PIPE );", 102, 0, input);
 
             throw nvae;
         }
-        switch (alt101) {
+        switch (alt102) {
             case 1 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:824:6: or_key
+                // src/main/resources/org/drools/lang/DRL.g:824:6: or_key
                 {
-                pushFollow(FOLLOW_or_key_in_synpred22108);
+                pushFollow(FOLLOW_or_key_in_synpred22114);
                 or_key();
                 _fsp--;
                 if (failed) return ;
@@ -16815,9 +16699,9 @@
                 }
                 break;
             case 2 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:824:13: DOUBLE_PIPE
+                // src/main/resources/org/drools/lang/DRL.g:824:13: DOUBLE_PIPE
                 {
-                match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_synpred22110); if (failed) return ;
+                match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_synpred22116); if (failed) return ;
 
                 }
                 break;
@@ -16827,11 +16711,11 @@
 
     // $ANTLR start synpred3
     public final void synpred3_fragment() throws RecognitionException {   
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:833:5: ( LEFT_PAREN and_key )
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:833:6: LEFT_PAREN and_key
+        // src/main/resources/org/drools/lang/DRL.g:833:5: ( LEFT_PAREN and_key )
+        // src/main/resources/org/drools/lang/DRL.g:833:6: LEFT_PAREN and_key
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred32167); if (failed) return ;
-        pushFollow(FOLLOW_and_key_in_synpred32169);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred32173); if (failed) return ;
+        pushFollow(FOLLOW_and_key_in_synpred32175);
         and_key();
         _fsp--;
         if (failed) return ;
@@ -16842,28 +16726,28 @@
 
     // $ANTLR start synpred4
     public final void synpred4_fragment() throws RecognitionException {   
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:5: ( and_key | DOUBLE_AMPER )
-        int alt102=2;
-        int LA102_0 = input.LA(1);
+        // src/main/resources/org/drools/lang/DRL.g:841:5: ( and_key | DOUBLE_AMPER )
+        int alt103=2;
+        int LA103_0 = input.LA(1);
 
-        if ( (LA102_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.AND)))) {
-            alt102=1;
+        if ( (LA103_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.AND)))) {
+            alt103=1;
         }
-        else if ( (LA102_0==DOUBLE_AMPER) ) {
-            alt102=2;
+        else if ( (LA103_0==DOUBLE_AMPER) ) {
+            alt103=2;
         }
         else {
             if (backtracking>0) {failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("841:5: synpred4 : ( and_key | DOUBLE_AMPER );", 102, 0, input);
+                new NoViableAltException("841:5: synpred4 : ( and_key | DOUBLE_AMPER );", 103, 0, input);
 
             throw nvae;
         }
-        switch (alt102) {
+        switch (alt103) {
             case 1 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:6: and_key
+                // src/main/resources/org/drools/lang/DRL.g:841:6: and_key
                 {
-                pushFollow(FOLLOW_and_key_in_synpred42237);
+                pushFollow(FOLLOW_and_key_in_synpred42243);
                 and_key();
                 _fsp--;
                 if (failed) return ;
@@ -16871,9 +16755,9 @@
                 }
                 break;
             case 2 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:14: DOUBLE_AMPER
+                // src/main/resources/org/drools/lang/DRL.g:841:14: DOUBLE_AMPER
                 {
-                match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_synpred42239); if (failed) return ;
+                match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_synpred42245); if (failed) return ;
 
                 }
                 break;
@@ -16883,10 +16767,10 @@
 
     // $ANTLR start synpred5
     public final void synpred5_fragment() throws RecognitionException {   
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:858:4: ( SEMICOLON )
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:858:5: SEMICOLON
+        // src/main/resources/org/drools/lang/DRL.g:858:4: ( SEMICOLON )
+        // src/main/resources/org/drools/lang/DRL.g:858:5: SEMICOLON
         {
-        match(input,SEMICOLON,FOLLOW_SEMICOLON_in_synpred52362); if (failed) return ;
+        match(input,SEMICOLON,FOLLOW_SEMICOLON_in_synpred52368); if (failed) return ;
 
         }
     }
@@ -16894,27 +16778,27 @@
 
     // $ANTLR start synpred6
     public final void synpred6_fragment() throws RecognitionException {   
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:864:12: ( LEFT_PAREN ( or_key | and_key ) )
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:864:13: LEFT_PAREN ( or_key | and_key )
+        // src/main/resources/org/drools/lang/DRL.g:864:12: ( LEFT_PAREN ( or_key | and_key ) )
+        // src/main/resources/org/drools/lang/DRL.g:864:13: LEFT_PAREN ( or_key | and_key )
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred62399); if (failed) return ;
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:864:24: ( or_key | and_key )
-        int alt103=2;
-        int LA103_0 = input.LA(1);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred62405); if (failed) return ;
+        // src/main/resources/org/drools/lang/DRL.g:864:24: ( or_key | and_key )
+        int alt104=2;
+        int LA104_0 = input.LA(1);
 
-        if ( (LA103_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))||(validateIdentifierKey(DroolsSoftKeywords.OR))))) {
-            int LA103_1 = input.LA(2);
+        if ( (LA104_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))||(validateIdentifierKey(DroolsSoftKeywords.OR))))) {
+            int LA104_1 = input.LA(2);
 
             if ( ((validateIdentifierKey(DroolsSoftKeywords.OR))) ) {
-                alt103=1;
+                alt104=1;
             }
             else if ( ((validateIdentifierKey(DroolsSoftKeywords.AND))) ) {
-                alt103=2;
+                alt104=2;
             }
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("864:24: ( or_key | and_key )", 103, 1, input);
+                    new NoViableAltException("864:24: ( or_key | and_key )", 104, 1, input);
 
                 throw nvae;
             }
@@ -16922,15 +16806,15 @@
         else {
             if (backtracking>0) {failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("864:24: ( or_key | and_key )", 103, 0, input);
+                new NoViableAltException("864:24: ( or_key | and_key )", 104, 0, input);
 
             throw nvae;
         }
-        switch (alt103) {
+        switch (alt104) {
             case 1 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:864:25: or_key
+                // src/main/resources/org/drools/lang/DRL.g:864:25: or_key
                 {
-                pushFollow(FOLLOW_or_key_in_synpred62402);
+                pushFollow(FOLLOW_or_key_in_synpred62408);
                 or_key();
                 _fsp--;
                 if (failed) return ;
@@ -16938,9 +16822,9 @@
                 }
                 break;
             case 2 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:864:32: and_key
+                // src/main/resources/org/drools/lang/DRL.g:864:32: and_key
                 {
-                pushFollow(FOLLOW_and_key_in_synpred62404);
+                pushFollow(FOLLOW_and_key_in_synpred62410);
                 and_key();
                 _fsp--;
                 if (failed) return ;
@@ -16957,27 +16841,27 @@
 
     // $ANTLR start synpred7
     public final void synpred7_fragment() throws RecognitionException {   
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:880:5: ( LEFT_PAREN ( or_key | and_key ) )
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:880:6: LEFT_PAREN ( or_key | and_key )
+        // src/main/resources/org/drools/lang/DRL.g:880:5: ( LEFT_PAREN ( or_key | and_key ) )
+        // src/main/resources/org/drools/lang/DRL.g:880:6: LEFT_PAREN ( or_key | and_key )
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred72527); if (failed) return ;
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:880:17: ( or_key | and_key )
-        int alt104=2;
-        int LA104_0 = input.LA(1);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred72533); if (failed) return ;
+        // src/main/resources/org/drools/lang/DRL.g:880:17: ( or_key | and_key )
+        int alt105=2;
+        int LA105_0 = input.LA(1);
 
-        if ( (LA104_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))||(validateIdentifierKey(DroolsSoftKeywords.OR))))) {
-            int LA104_1 = input.LA(2);
+        if ( (LA105_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))||(validateIdentifierKey(DroolsSoftKeywords.OR))))) {
+            int LA105_1 = input.LA(2);
 
             if ( ((validateIdentifierKey(DroolsSoftKeywords.OR))) ) {
-                alt104=1;
+                alt105=1;
             }
             else if ( ((validateIdentifierKey(DroolsSoftKeywords.AND))) ) {
-                alt104=2;
+                alt105=2;
             }
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("880:17: ( or_key | and_key )", 104, 1, input);
+                    new NoViableAltException("880:17: ( or_key | and_key )", 105, 1, input);
 
                 throw nvae;
             }
@@ -16985,15 +16869,15 @@
         else {
             if (backtracking>0) {failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("880:17: ( or_key | and_key )", 104, 0, input);
+                new NoViableAltException("880:17: ( or_key | and_key )", 105, 0, input);
 
             throw nvae;
         }
-        switch (alt104) {
+        switch (alt105) {
             case 1 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:880:18: or_key
+                // src/main/resources/org/drools/lang/DRL.g:880:18: or_key
                 {
-                pushFollow(FOLLOW_or_key_in_synpred72530);
+                pushFollow(FOLLOW_or_key_in_synpred72536);
                 or_key();
                 _fsp--;
                 if (failed) return ;
@@ -17001,9 +16885,9 @@
                 }
                 break;
             case 2 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:880:25: and_key
+                // src/main/resources/org/drools/lang/DRL.g:880:25: and_key
                 {
-                pushFollow(FOLLOW_and_key_in_synpred72532);
+                pushFollow(FOLLOW_and_key_in_synpred72538);
                 and_key();
                 _fsp--;
                 if (failed) return ;
@@ -17020,20 +16904,20 @@
 
     // $ANTLR start synpred8
     public final void synpred8_fragment() throws RecognitionException {   
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1049:5: ( LEFT_PAREN )
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1049:6: LEFT_PAREN
+        // src/main/resources/org/drools/lang/DRL.g:1049:5: ( LEFT_PAREN )
+        // src/main/resources/org/drools/lang/DRL.g:1049:6: LEFT_PAREN
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred83361); if (failed) return ;
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred83367); if (failed) return ;
 
         }
     }
     // $ANTLR end synpred8
 
-    public final boolean synpred4() {
+    public final boolean synpred5() {
         backtracking++;
         int start = input.mark();
         try {
-            synpred4_fragment(); // can never throw exception
+            synpred5_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -17043,11 +16927,11 @@
         failed=false;
         return success;
     }
-    public final boolean synpred7() {
+    public final boolean synpred6() {
         backtracking++;
         int start = input.mark();
         try {
-            synpred7_fragment(); // can never throw exception
+            synpred6_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -17057,11 +16941,11 @@
         failed=false;
         return success;
     }
-    public final boolean synpred2() {
+    public final boolean synpred7() {
         backtracking++;
         int start = input.mark();
         try {
-            synpred2_fragment(); // can never throw exception
+            synpred7_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -17071,11 +16955,11 @@
         failed=false;
         return success;
     }
-    public final boolean synpred3() {
+    public final boolean synpred8() {
         backtracking++;
         int start = input.mark();
         try {
-            synpred3_fragment(); // can never throw exception
+            synpred8_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -17099,11 +16983,11 @@
         failed=false;
         return success;
     }
-    public final boolean synpred5() {
+    public final boolean synpred2() {
         backtracking++;
         int start = input.mark();
         try {
-            synpred5_fragment(); // can never throw exception
+            synpred2_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -17113,11 +16997,11 @@
         failed=false;
         return success;
     }
-    public final boolean synpred6() {
+    public final boolean synpred3() {
         backtracking++;
         int start = input.mark();
         try {
-            synpred6_fragment(); // can never throw exception
+            synpred3_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -17127,11 +17011,11 @@
         failed=false;
         return success;
     }
-    public final boolean synpred8() {
+    public final boolean synpred4() {
         backtracking++;
         int start = input.mark();
         try {
-            synpred8_fragment(); // can never throw exception
+            synpred4_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -17145,12 +17029,13 @@
 
     protected DFA12 dfa12 = new DFA12(this);
     protected DFA17 dfa17 = new DFA17(this);
-    protected DFA51 dfa51 = new DFA51(this);
     protected DFA52 dfa52 = new DFA52(this);
-    protected DFA63 dfa63 = new DFA63(this);
-    protected DFA66 dfa66 = new DFA66(this);
-    protected DFA81 dfa81 = new DFA81(this);
+    protected DFA53 dfa53 = new DFA53(this);
+    protected DFA64 dfa64 = new DFA64(this);
+    protected DFA67 dfa67 = new DFA67(this);
+    protected DFA69 dfa69 = new DFA69(this);
     protected DFA82 dfa82 = new DFA82(this);
+    protected DFA83 dfa83 = new DFA83(this);
     static final String DFA12_eotS =
         "\16\uffff";
     static final String DFA12_eofS =
@@ -17219,20 +17104,20 @@
     static final String DFA17_eofS =
         "\6\uffff";
     static final String DFA17_minS =
-        "\2\123\1\uffff\1\163\1\uffff\1\123";
+        "\2\123\1\163\2\uffff\1\123";
     static final String DFA17_maxS =
-        "\1\123\1\162\1\uffff\1\163\1\uffff\1\162";
+        "\1\123\1\162\1\163\2\uffff\1\162";
     static final String DFA17_acceptS =
-        "\2\uffff\1\1\1\uffff\1\2\1\uffff";
+        "\3\uffff\1\2\1\1\1\uffff";
     static final String DFA17_specialS =
         "\6\uffff}>";
     static final String[] DFA17_transitionS = {
             "\1\1",
-            "\2\2\4\uffff\2\4\27\uffff\1\3",
-            "",
+            "\2\4\4\uffff\2\3\27\uffff\1\2",
             "\1\5",
             "",
-            "\1\2\5\uffff\2\4\27\uffff\1\3"
+            "",
+            "\1\4\5\uffff\2\3\27\uffff\1\2"
     };
 
     static final short[] DFA17_eot = DFA.unpackEncodedString(DFA17_eotS);
@@ -17268,46 +17153,46 @@
             return "563:4: ( data_type )?";
         }
     }
-    static final String DFA51_eotS =
-        "\u0082\uffff";
-    static final String DFA51_eofS =
-        "\u0082\uffff";
-    static final String DFA51_minS =
-        "\3\123\2\0\1\123\1\0\1\123\1\163\3\uffff\1\124\1\123\1\uffff\1\124"+
-        "\1\130\1\123\1\163\1\123\1\124\1\123\1\124\1\130\1\123\2\0\1\123"+
-        "\1\163\2\123\2\0\1\123\1\4\11\123\1\0\2\uffff\1\124\1\130\1\123"+
-        "\1\0\2\123\1\0\1\4\11\123\1\uffff\1\123\1\4\16\0\1\uffff\14\0\1"+
-        "\uffff\4\0\1\uffff\36\0";
-    static final String DFA51_maxS =
-        "\2\130\1\162\2\0\1\130\1\0\1\123\1\163\3\uffff\1\162\1\123\1\uffff"+
-        "\2\162\1\123\1\163\1\132\1\162\1\132\3\162\2\0\1\123\1\163\1\132"+
-        "\1\162\2\0\1\123\1\u0080\1\123\7\161\1\123\1\0\2\uffff\3\162\1\0"+
-        "\1\141\1\123\1\0\1\u0080\1\123\7\161\1\123\1\uffff\1\162\1\u0080"+
-        "\16\0\1\uffff\14\0\1\uffff\4\0\1\uffff\36\0";
-    static final String DFA51_acceptS =
-        "\11\uffff\1\1\2\2\2\uffff\1\3\36\uffff\2\3\21\uffff\1\3\20\uffff"+
-        "\1\3\14\uffff\1\3\4\uffff\1\3\36\uffff";
-    static final String DFA51_specialS =
-        "\2\uffff\1\3\1\7\1\11\1\uffff\1\6\22\uffff\1\5\1\10\4\uffff\1\4"+
-        "\1\0\13\uffff\1\2\5\uffff\1\12\2\uffff\1\1\114\uffff}>";
-    static final String[] DFA51_transitionS = {
+    static final String DFA52_eotS =
+        "\u0083\uffff";
+    static final String DFA52_eofS =
+        "\u0083\uffff";
+    static final String DFA52_minS =
+        "\3\123\2\0\1\123\1\0\1\uffff\1\123\1\163\2\uffff\1\124\1\123\1"+
+        "\uffff\1\124\1\130\1\123\1\163\1\123\1\124\1\123\1\124\1\130\1\123"+
+        "\2\0\1\123\1\163\2\123\2\0\1\123\1\0\1\4\11\123\2\uffff\1\124\1"+
+        "\130\1\123\1\0\2\123\1\0\1\4\11\123\2\uffff\1\123\1\uffff\1\4\32"+
+        "\0\1\uffff\4\0\1\uffff\36\0";
+    static final String DFA52_maxS =
+        "\2\130\1\162\2\0\1\130\1\0\1\uffff\1\123\1\163\2\uffff\1\162\1"+
+        "\123\1\uffff\2\162\1\123\1\163\1\132\1\162\1\132\3\162\2\0\1\123"+
+        "\1\163\1\132\1\162\2\0\1\123\1\0\1\u0080\1\123\7\161\1\123\2\uffff"+
+        "\3\162\1\0\1\141\1\123\1\0\1\u0080\1\123\7\161\1\123\2\uffff\1\162"+
+        "\1\uffff\1\u0080\32\0\1\uffff\4\0\1\uffff\36\0";
+    static final String DFA52_acceptS =
+        "\7\uffff\1\1\2\uffff\2\2\2\uffff\1\3\36\uffff\2\3\21\uffff\2\3"+
+        "\1\uffff\1\3\33\uffff\1\3\4\uffff\1\3\36\uffff";
+    static final String DFA52_specialS =
+        "\2\uffff\1\5\1\3\1\4\1\uffff\1\2\22\uffff\1\10\1\0\4\uffff\1\7"+
+        "\1\1\1\uffff\1\12\17\uffff\1\11\2\uffff\1\6\115\uffff}>";
+    static final String[] DFA52_transitionS = {
             "\1\2\4\uffff\1\1",
-            "\1\4\4\uffff\1\3",
-            "\1\11\1\7\3\uffff\1\6\3\uffff\1\5\25\uffff\1\10",
+            "\1\3\4\uffff\1\4",
+            "\1\7\1\10\3\uffff\1\6\3\uffff\1\5\25\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\31\uffff\1\22",
             "\1\24",
             "",
-            "\1\7\3\uffff\1\25\31\uffff\1\10",
-            "\1\25\31\uffff\1\10",
+            "\1\10\3\uffff\1\25\31\uffff\1\11",
+            "\1\25\31\uffff\1\11",
             "\1\26",
             "\1\27",
             "\1\30\4\uffff\1\31\1\uffff\1\32",
@@ -17315,68 +17200,70 @@
             "\1\36\4\uffff\1\37\1\uffff\1\40",
             "\1\21\3\uffff\1\23\31\uffff\1\22",
             "\1\23\31\uffff\1\22",
-            "\1\44\1\43\3\uffff\1\54\3\uffff\1\41\14\uffff\1\45\1\46\1\47"+
-            "\1\50\1\51\1\52\1\53\2\uffff\1\42",
+            "\1\45\1\44\3\uffff\1\42\3\uffff\1\41\14\uffff\1\46\1\47\1"+
+            "\50\1\51\1\52\1\53\1\54\2\uffff\1\43",
             "\1\uffff",
             "\1\uffff",
             "\1\57",
             "\1\60",
             "\1\61\4\uffff\1\62\1\uffff\1\63",
-            "\1\70\1\67\3\uffff\1\65\3\uffff\1\64\14\uffff\1\71\1\72\1\73"+
-            "\1\74\1\75\1\76\1\77\2\uffff\1\66",
+            "\1\70\1\67\3\uffff\1\65\3\uffff\1\64\14\uffff\1\71\1\72\1"+
+            "\73\1\74\1\75\1\76\1\77\2\uffff\1\66",
             "\1\uffff",
             "\1\uffff",
-            "\1\101",
-            "\156\102\1\103\1\104\15\102",
-            "\1\105",
-            "\1\106\3\uffff\1\107\1\114\6\uffff\1\112\1\110\16\uffff\1\115"+
-            "\1\111\1\113",
-            "\1\116\3\uffff\1\107\1\117\6\uffff\1\112\1\110\17\uffff\1\111"+
-            "\1\113",
-            "\1\116\3\uffff\1\107\1\117\6\uffff\1\112\1\110\17\uffff\1\111"+
-            "\1\113",
-            "\1\116\3\uffff\1\107\1\117\6\uffff\1\112\1\110\17\uffff\1\111"+
-            "\1\113",
-            "\1\116\3\uffff\1\107\1\117\6\uffff\1\112\1\110\17\uffff\1\111"+
-            "\1\113",
-            "\1\116\3\uffff\1\107\1\117\6\uffff\1\112\1\110\17\uffff\1\111"+
-            "\1\113",
-            "\1\116\3\uffff\1\107\1\117\6\uffff\1\112\1\110\17\uffff\1\111"+
-            "\1\113",
-            "\1\120",
+            "\1\102",
             "\1\uffff",
+            "\156\104\1\105\1\106\15\104",
+            "\1\107",
+            "\1\110\3\uffff\1\111\1\116\6\uffff\1\114\1\112\16\uffff\1"+
+            "\117\1\113\1\115",
+            "\1\120\3\uffff\1\111\1\121\6\uffff\1\114\1\112\17\uffff\1"+
+            "\113\1\115",
+            "\1\120\3\uffff\1\111\1\121\6\uffff\1\114\1\112\17\uffff\1"+
+            "\113\1\115",
+            "\1\120\3\uffff\1\111\1\121\6\uffff\1\114\1\112\17\uffff\1"+
+            "\113\1\115",
+            "\1\120\3\uffff\1\111\1\121\6\uffff\1\114\1\112\17\uffff\1"+
+            "\113\1\115",
+            "\1\120\3\uffff\1\111\1\121\6\uffff\1\114\1\112\17\uffff\1"+
+            "\113\1\115",
+            "\1\120\3\uffff\1\111\1\121\6\uffff\1\114\1\112\17\uffff\1"+
+            "\113\1\115",
+            "\1\122",
             "",
             "",
             "\1\33\3\uffff\1\35\31\uffff\1\34",
             "\1\35\31\uffff\1\34",
-            "\1\126\1\125\3\uffff\1\123\3\uffff\1\122\14\uffff\1\127\1\130"+
-            "\1\131\1\132\1\133\1\134\1\135\2\uffff\1\124",
+            "\1\127\1\126\3\uffff\1\124\3\uffff\1\123\14\uffff\1\130\1"+
+            "\131\1\132\1\133\1\134\1\135\1\136\2\uffff\1\125",
             "\1\uffff",
-            "\1\137\6\uffff\1\141\6\uffff\1\140",
-            "\1\142",
+            "\1\140\6\uffff\1\142\6\uffff\1\141",
+            "\1\143",
             "\1\uffff",
-            "\156\144\1\145\1\146\15\144",
-            "\1\147",
-            "\1\150\3\uffff\1\151\1\156\6\uffff\1\154\1\152\16\uffff\1\157"+
-            "\1\153\1\155",
-            "\1\160\3\uffff\1\151\1\161\6\uffff\1\154\1\152\17\uffff\1\153"+
-            "\1\155",
-            "\1\160\3\uffff\1\151\1\161\6\uffff\1\154\1\152\17\uffff\1\153"+
-            "\1\155",
-            "\1\160\3\uffff\1\151\1\161\6\uffff\1\154\1\152\17\uffff\1\153"+
-            "\1\155",
-            "\1\160\3\uffff\1\151\1\161\6\uffff\1\154\1\152\17\uffff\1\153"+
-            "\1\155",
-            "\1\160\3\uffff\1\151\1\161\6\uffff\1\154\1\152\17\uffff\1\153"+
-            "\1\155",
-            "\1\160\3\uffff\1\151\1\161\6\uffff\1\154\1\152\17\uffff\1\153"+
-            "\1\155",
-            "\1\162",
+            "\156\145\1\146\1\147\15\145",
+            "\1\150",
+            "\1\151\3\uffff\1\152\1\157\6\uffff\1\155\1\153\16\uffff\1"+
+            "\160\1\154\1\156",
+            "\1\161\3\uffff\1\152\1\162\6\uffff\1\155\1\153\17\uffff\1"+
+            "\154\1\156",
+            "\1\161\3\uffff\1\152\1\162\6\uffff\1\155\1\153\17\uffff\1"+
+            "\154\1\156",
+            "\1\161\3\uffff\1\152\1\162\6\uffff\1\155\1\153\17\uffff\1"+
+            "\154\1\156",
+            "\1\161\3\uffff\1\152\1\162\6\uffff\1\155\1\153\17\uffff\1"+
+            "\154\1\156",
+            "\1\161\3\uffff\1\152\1\162\6\uffff\1\155\1\153\17\uffff\1"+
+            "\154\1\156",
+            "\1\161\3\uffff\1\152\1\162\6\uffff\1\155\1\153\17\uffff\1"+
+            "\154\1\156",
+            "\1\163",
             "",
-            "\1\165\1\164\3\uffff\1\175\1\u0081\1\32\6\uffff\1\u0080\1\177"+
-            "\5\uffff\1\176\1\166\1\167\1\170\1\171\1\172\1\173\1\174\2\uffff"+
-            "\1\163",
-            "\156\102\1\103\1\104\15\102",
+            "",
+            "\1\166\1\165\3\uffff\1\176\1\u0082\1\32\6\uffff\1\u0081\1"+
+            "\u0080\5\uffff\1\177\1\167\1\170\1\171\1\172\1\173\1\174\1\175"+
+            "\2\uffff\1\164",
+            "",
+            "\156\104\1\105\1\106\15\104",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -17391,7 +17278,6 @@
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
-            "",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -17442,34 +17328,34 @@
             "\1\uffff"
     };
 
-    static final short[] DFA51_eot = DFA.unpackEncodedString(DFA51_eotS);
-    static final short[] DFA51_eof = DFA.unpackEncodedString(DFA51_eofS);
-    static final char[] DFA51_min = DFA.unpackEncodedStringToUnsignedChars(DFA51_minS);
-    static final char[] DFA51_max = DFA.unpackEncodedStringToUnsignedChars(DFA51_maxS);
-    static final short[] DFA51_accept = DFA.unpackEncodedString(DFA51_acceptS);
-    static final short[] DFA51_special = DFA.unpackEncodedString(DFA51_specialS);
-    static final short[][] DFA51_transition;
+    static final short[] DFA52_eot = DFA.unpackEncodedString(DFA52_eotS);
+    static final short[] DFA52_eof = DFA.unpackEncodedString(DFA52_eofS);
+    static final char[] DFA52_min = DFA.unpackEncodedStringToUnsignedChars(DFA52_minS);
+    static final char[] DFA52_max = DFA.unpackEncodedStringToUnsignedChars(DFA52_maxS);
+    static final short[] DFA52_accept = DFA.unpackEncodedString(DFA52_acceptS);
+    static final short[] DFA52_special = DFA.unpackEncodedString(DFA52_specialS);
+    static final short[][] DFA52_transition;
 
     static {
-        int numStates = DFA51_transitionS.length;
-        DFA51_transition = new short[numStates][];
+        int numStates = DFA52_transitionS.length;
+        DFA52_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA51_transition[i] = DFA.unpackEncodedString(DFA51_transitionS[i]);
+            DFA52_transition[i] = DFA.unpackEncodedString(DFA52_transitionS[i]);
         }
     }
 
-    class DFA51 extends DFA {
+    class DFA52 extends DFA {
 
-        public DFA51(BaseRecognizer recognizer) {
+        public DFA52(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 51;
-            this.eot = DFA51_eot;
-            this.eof = DFA51_eof;
-            this.min = DFA51_min;
-            this.max = DFA51_max;
-            this.accept = DFA51_accept;
-            this.special = DFA51_special;
-            this.transition = DFA51_transition;
+            this.decisionNumber = 52;
+            this.eot = DFA52_eot;
+            this.eof = DFA52_eof;
+            this.min = DFA52_min;
+            this.max = DFA52_max;
+            this.accept = DFA52_accept;
+            this.special = DFA52_special;
+            this.transition = DFA52_transition;
         }
         public String getDescription() {
             return "864:10: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )";
@@ -17478,224 +17364,224 @@
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA51_32 = input.LA(1);
+                        int LA52_26 = input.LA(1);
 
                          
-                        int index51_32 = input.index();
+                        int index52_26 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred6()) ) {s = 9;}
+                        if ( (synpred6()) ) {s = 7;}
 
                         else if ( (true) ) {s = 46;}
 
                          
-                        input.seek(index51_32);
+                        input.seek(index52_26);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA51_53 = input.LA(1);
+                        int LA52_32 = input.LA(1);
 
                          
-                        int index51_53 = input.index();
+                        int index52_32 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred6()) ) {s = 9;}
+                        if ( (synpred6()) ) {s = 7;}
 
-                        else if ( (true) ) {s = 99;}
+                        else if ( (true) ) {s = 65;}
 
                          
-                        input.seek(index51_53);
+                        input.seek(index52_32);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA51_44 = input.LA(1);
+                        int LA52_6 = input.LA(1);
 
                          
-                        int index51_44 = input.index();
+                        int index52_6 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred6()) ) {s = 9;}
+                        if ( (((synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EVAL)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||synpred6()||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.FORALL)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS))))) ) {s = 7;}
 
-                        else if ( (true) ) {s = 81;}
+                        else if ( (true) ) {s = 14;}
 
                          
-                        input.seek(index51_44);
+                        input.seek(index52_6);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA51_2 = input.LA(1);
+                        int LA52_3 = input.LA(1);
 
                          
-                        int index51_2 = input.index();
+                        int index52_3 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA51_2==COLON) ) {s = 5;}
+                        if ( (synpred6()) ) {s = 7;}
 
-                        else if ( (LA51_2==LEFT_PAREN) ) {s = 6;}
+                        else if ( (true) ) {s = 10;}
 
-                        else if ( (LA51_2==DOT) ) {s = 7;}
-
-                        else if ( (LA51_2==LEFT_SQUARE) ) {s = 8;}
-
-                        else if ( (LA51_2==ID) && (((synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(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.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(!
 DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||((synpred6()&&validateNotWithBinding())&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {s = 9;}
-
                          
-                        input.seek(index51_2);
+                        input.seek(index52_3);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA51_31 = input.LA(1);
+                        int LA52_4 = input.LA(1);
 
                          
-                        int index51_31 = input.index();
+                        int index52_4 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred6()) ) {s = 9;}
+                        if ( (synpred6()) ) {s = 7;}
 
-                        else if ( (true) ) {s = 64;}
+                        else if ( (true) ) {s = 11;}
 
                          
-                        input.seek(index51_31);
+                        input.seek(index52_4);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA51_25 = input.LA(1);
+                        int LA52_2 = input.LA(1);
 
                          
-                        int index51_25 = input.index();
+                        int index52_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred6()) ) {s = 9;}
+                        if ( (LA52_2==COLON) ) {s = 5;}
 
-                        else if ( (true) ) {s = 45;}
+                        else if ( (LA52_2==LEFT_PAREN) ) {s = 6;}
 
+                        else if ( (LA52_2==ID) && (((synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(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.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierK!
 ey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||((synpred6()&&validateNotWithBinding())&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {s = 7;}
+
+                        else if ( (LA52_2==DOT) ) {s = 8;}
+
+                        else if ( (LA52_2==LEFT_SQUARE) ) {s = 9;}
+
                          
-                        input.seek(index51_25);
+                        input.seek(index52_2);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA51_6 = input.LA(1);
+                        int LA52_53 = input.LA(1);
 
                          
-                        int index51_6 = input.index();
+                        int index52_53 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (((synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.FORALL)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EVAL)))||synpred6())) ) {s = 9;}
+                        if ( (synpred6()) ) {s = 7;}
 
-                        else if ( (true) ) {s = 14;}
+                        else if ( (true) ) {s = 100;}
 
                          
-                        input.seek(index51_6);
+                        input.seek(index52_53);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA51_3 = input.LA(1);
+                        int LA52_31 = input.LA(1);
 
                          
-                        int index51_3 = input.index();
+                        int index52_31 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred6()) ) {s = 9;}
+                        if ( (synpred6()) ) {s = 7;}
 
-                        else if ( (true) ) {s = 10;}
+                        else if ( (true) ) {s = 64;}
 
                          
-                        input.seek(index51_3);
+                        input.seek(index52_31);
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA51_26 = input.LA(1);
+                        int LA52_25 = input.LA(1);
 
                          
-                        int index51_26 = input.index();
+                        int index52_25 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred6()) ) {s = 9;}
+                        if ( (synpred6()) ) {s = 7;}
 
-                        else if ( (true) ) {s = 46;}
+                        else if ( (true) ) {s = 45;}
 
                          
-                        input.seek(index51_26);
+                        input.seek(index52_25);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
-                        int LA51_4 = input.LA(1);
+                        int LA52_50 = input.LA(1);
 
                          
-                        int index51_4 = input.index();
+                        int index52_50 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred6()) ) {s = 9;}
+                        if ( (synpred6()) ) {s = 7;}
 
-                        else if ( (true) ) {s = 11;}
+                        else if ( (true) ) {s = 95;}
 
                          
-                        input.seek(index51_4);
+                        input.seek(index52_50);
                         if ( s>=0 ) return s;
                         break;
                     case 10 : 
-                        int LA51_50 = input.LA(1);
+                        int LA52_34 = input.LA(1);
 
                          
-                        int index51_50 = input.index();
+                        int index52_34 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred6()) ) {s = 9;}
+                        if ( (synpred6()) ) {s = 7;}
 
-                        else if ( (true) ) {s = 94;}
+                        else if ( (true) ) {s = 67;}
 
                          
-                        input.seek(index51_50);
+                        input.seek(index52_34);
                         if ( s>=0 ) return s;
                         break;
             }
             if (backtracking>0) {failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 51, _s, input);
+                new NoViableAltException(getDescription(), 52, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA52_eotS =
-        "\u0082\uffff";
-    static final String DFA52_eofS =
-        "\u0082\uffff";
-    static final String DFA52_minS =
-        "\3\123\2\0\1\123\1\0\1\uffff\1\123\1\163\2\uffff\1\124\1\123\1\uffff"+
-        "\1\124\1\130\1\123\1\163\1\123\1\124\1\123\1\124\1\130\1\123\2\0"+
-        "\1\123\1\163\2\123\2\0\1\123\1\0\1\4\11\123\2\uffff\1\124\1\130"+
-        "\1\123\1\0\2\123\1\0\1\4\11\123\1\uffff\1\123\1\uffff\1\4\32\0\1"+
-        "\uffff\4\0\1\uffff\36\0";
-    static final String DFA52_maxS =
-        "\2\130\1\162\2\0\1\130\1\0\1\uffff\1\123\1\163\2\uffff\1\162\1\123"+
-        "\1\uffff\2\162\1\123\1\163\1\132\1\162\1\132\3\162\2\0\1\123\1\163"+
-        "\1\132\1\162\2\0\1\123\1\0\1\u0080\1\123\7\161\1\123\2\uffff\3\162"+
-        "\1\0\1\141\1\123\1\0\1\u0080\1\123\7\161\1\123\1\uffff\1\162\1\uffff"+
-        "\1\u0080\32\0\1\uffff\4\0\1\uffff\36\0";
-    static final String DFA52_acceptS =
-        "\7\uffff\1\1\2\uffff\2\2\2\uffff\1\3\36\uffff\2\3\21\uffff\1\3\1"+
-        "\uffff\1\3\33\uffff\1\3\4\uffff\1\3\36\uffff";
-    static final String DFA52_specialS =
-        "\2\uffff\1\4\1\10\1\11\1\uffff\1\7\22\uffff\1\5\1\2\4\uffff\1\12"+
-        "\1\3\1\uffff\1\1\17\uffff\1\6\2\uffff\1\0\114\uffff}>";
-    static final String[] DFA52_transitionS = {
+    static final String DFA53_eotS =
+        "\u0083\uffff";
+    static final String DFA53_eofS =
+        "\u0083\uffff";
+    static final String DFA53_minS =
+        "\3\123\2\0\2\123\1\163\1\0\3\uffff\1\124\1\123\1\124\1\130\1\uffff"+
+        "\1\123\1\163\1\123\1\124\1\123\1\124\1\130\1\123\2\0\1\123\1\163"+
+        "\2\123\2\0\1\123\1\4\11\123\1\0\2\uffff\1\124\1\130\1\123\1\0\2"+
+        "\123\1\4\11\123\1\0\2\uffff\1\123\1\4\16\0\1\uffff\14\0\1\uffff"+
+        "\23\0\1\uffff\17\0";
+    static final String DFA53_maxS =
+        "\2\130\1\162\2\0\1\130\1\123\1\163\1\0\3\uffff\1\162\1\123\2\162"+
+        "\1\uffff\1\123\1\163\1\132\1\162\1\132\3\162\2\0\1\123\1\163\1\132"+
+        "\1\162\2\0\1\123\1\u0080\1\123\7\161\1\123\1\0\2\uffff\3\162\1\0"+
+        "\1\141\1\123\1\u0080\1\123\7\161\1\123\1\0\2\uffff\1\162\1\u0080"+
+        "\16\0\1\uffff\14\0\1\uffff\23\0\1\uffff\17\0";
+    static final String DFA53_acceptS =
+        "\11\uffff\1\1\2\2\4\uffff\1\3\34\uffff\2\3\21\uffff\2\3\20\uffff"+
+        "\1\3\14\uffff\1\3\23\uffff\1\3\17\uffff";
+    static final String DFA53_specialS =
+        "\2\uffff\1\6\1\0\1\4\3\uffff\1\2\20\uffff\1\10\1\1\4\uffff\1\11"+
+        "\1\5\13\uffff\1\7\5\uffff\1\12\14\uffff\1\3\103\uffff}>";
+    static final String[] DFA53_transitionS = {
             "\1\2\4\uffff\1\1",
             "\1\4\4\uffff\1\3",
-            "\1\7\1\10\3\uffff\1\6\3\uffff\1\5\25\uffff\1\11",
+            "\1\11\1\6\3\uffff\1\10\3\uffff\1\5\25\uffff\1\7",
             "\1\uffff",
             "\1\uffff",
             "\1\14\4\uffff\1\15",
+            "\1\16",
+            "\1\17",
             "\1\uffff",
             "",
-            "\1\17",
-            "\1\20",
             "",
             "",
             "\1\21\3\uffff\1\23\31\uffff\1\22",
             "\1\24",
+            "\1\6\3\uffff\1\25\31\uffff\1\7",
+            "\1\25\31\uffff\1\7",
             "",
-            "\1\10\3\uffff\1\25\31\uffff\1\11",
-            "\1\25\31\uffff\1\11",
             "\1\26",
             "\1\27",
             "\1\30\4\uffff\1\31\1\uffff\1\32",
@@ -17703,68 +17589,68 @@
             "\1\36\4\uffff\1\37\1\uffff\1\40",
             "\1\21\3\uffff\1\23\31\uffff\1\22",
             "\1\23\31\uffff\1\22",
-            "\1\45\1\44\3\uffff\1\42\3\uffff\1\41\14\uffff\1\46\1\47\1\50"+
-            "\1\51\1\52\1\53\1\54\2\uffff\1\43",
+            "\1\44\1\43\3\uffff\1\54\3\uffff\1\41\14\uffff\1\45\1\46\1"+
+            "\47\1\50\1\51\1\52\1\53\2\uffff\1\42",
             "\1\uffff",
             "\1\uffff",
             "\1\57",
             "\1\60",
             "\1\61\4\uffff\1\62\1\uffff\1\63",
-            "\1\70\1\67\3\uffff\1\65\3\uffff\1\64\14\uffff\1\71\1\72\1\73"+
-            "\1\74\1\75\1\76\1\77\2\uffff\1\66",
+            "\1\67\1\66\3\uffff\1\77\3\uffff\1\64\14\uffff\1\70\1\71\1"+
+            "\72\1\73\1\74\1\75\1\76\2\uffff\1\65",
             "\1\uffff",
             "\1\uffff",
-            "\1\101",
-            "\1\uffff",
+            "\1\102",
             "\156\103\1\104\1\105\15\103",
             "\1\106",
-            "\1\107\3\uffff\1\110\1\115\6\uffff\1\113\1\111\16\uffff\1\116"+
-            "\1\112\1\114",
-            "\1\117\3\uffff\1\110\1\120\6\uffff\1\113\1\111\17\uffff\1\112"+
-            "\1\114",
-            "\1\117\3\uffff\1\110\1\120\6\uffff\1\113\1\111\17\uffff\1\112"+
-            "\1\114",
-            "\1\117\3\uffff\1\110\1\120\6\uffff\1\113\1\111\17\uffff\1\112"+
-            "\1\114",
-            "\1\117\3\uffff\1\110\1\120\6\uffff\1\113\1\111\17\uffff\1\112"+
-            "\1\114",
-            "\1\117\3\uffff\1\110\1\120\6\uffff\1\113\1\111\17\uffff\1\112"+
-            "\1\114",
-            "\1\117\3\uffff\1\110\1\120\6\uffff\1\113\1\111\17\uffff\1\112"+
-            "\1\114",
+            "\1\107\3\uffff\1\110\1\115\6\uffff\1\113\1\111\16\uffff\1"+
+            "\116\1\112\1\114",
+            "\1\117\3\uffff\1\110\1\120\6\uffff\1\113\1\111\17\uffff\1"+
+            "\112\1\114",
+            "\1\117\3\uffff\1\110\1\120\6\uffff\1\113\1\111\17\uffff\1"+
+            "\112\1\114",
+            "\1\117\3\uffff\1\110\1\120\6\uffff\1\113\1\111\17\uffff\1"+
+            "\112\1\114",
+            "\1\117\3\uffff\1\110\1\120\6\uffff\1\113\1\111\17\uffff\1"+
+            "\112\1\114",
+            "\1\117\3\uffff\1\110\1\120\6\uffff\1\113\1\111\17\uffff\1"+
+            "\112\1\114",
+            "\1\117\3\uffff\1\110\1\120\6\uffff\1\113\1\111\17\uffff\1"+
+            "\112\1\114",
             "\1\121",
+            "\1\uffff",
             "",
             "",
             "\1\33\3\uffff\1\35\31\uffff\1\34",
             "\1\35\31\uffff\1\34",
-            "\1\126\1\125\3\uffff\1\123\3\uffff\1\122\14\uffff\1\127\1\130"+
-            "\1\131\1\132\1\133\1\134\1\135\2\uffff\1\124",
+            "\1\126\1\125\3\uffff\1\136\3\uffff\1\123\14\uffff\1\127\1"+
+            "\130\1\131\1\132\1\133\1\134\1\135\2\uffff\1\124",
             "\1\uffff",
-            "\1\137\6\uffff\1\141\6\uffff\1\140",
-            "\1\142",
-            "\1\uffff",
+            "\1\140\6\uffff\1\142\6\uffff\1\141",
+            "\1\143",
             "\156\144\1\145\1\146\15\144",
             "\1\147",
-            "\1\150\3\uffff\1\151\1\156\6\uffff\1\154\1\152\16\uffff\1\157"+
-            "\1\153\1\155",
-            "\1\160\3\uffff\1\151\1\161\6\uffff\1\154\1\152\17\uffff\1\153"+
-            "\1\155",
-            "\1\160\3\uffff\1\151\1\161\6\uffff\1\154\1\152\17\uffff\1\153"+
-            "\1\155",
-            "\1\160\3\uffff\1\151\1\161\6\uffff\1\154\1\152\17\uffff\1\153"+
-            "\1\155",
-            "\1\160\3\uffff\1\151\1\161\6\uffff\1\154\1\152\17\uffff\1\153"+
-            "\1\155",
-            "\1\160\3\uffff\1\151\1\161\6\uffff\1\154\1\152\17\uffff\1\153"+
-            "\1\155",
-            "\1\160\3\uffff\1\151\1\161\6\uffff\1\154\1\152\17\uffff\1\153"+
-            "\1\155",
+            "\1\150\3\uffff\1\152\1\157\6\uffff\1\155\1\153\16\uffff\1"+
+            "\151\1\154\1\156",
+            "\1\160\3\uffff\1\152\1\161\6\uffff\1\155\1\153\17\uffff\1"+
+            "\154\1\156",
+            "\1\160\3\uffff\1\152\1\161\6\uffff\1\155\1\153\17\uffff\1"+
+            "\154\1\156",
+            "\1\160\3\uffff\1\152\1\161\6\uffff\1\155\1\153\17\uffff\1"+
+            "\154\1\156",
+            "\1\160\3\uffff\1\152\1\161\6\uffff\1\155\1\153\17\uffff\1"+
+            "\154\1\156",
+            "\1\160\3\uffff\1\152\1\161\6\uffff\1\155\1\153\17\uffff\1"+
+            "\154\1\156",
+            "\1\160\3\uffff\1\152\1\161\6\uffff\1\155\1\153\17\uffff\1"+
+            "\154\1\156",
             "\1\162",
+            "\1\uffff",
             "",
-            "\1\165\1\164\3\uffff\1\175\1\u0081\1\32\6\uffff\1\u0080\1\177"+
-            "\5\uffff\1\176\1\166\1\167\1\170\1\171\1\172\1\173\1\174\2\uffff"+
-            "\1\163",
             "",
+            "\1\166\1\165\3\uffff\1\176\1\u0082\1\32\6\uffff\1\u0081\1"+
+            "\u0080\5\uffff\1\177\1\167\1\170\1\171\1\172\1\173\1\174\1\175"+
+            "\2\uffff\1\164",
             "\156\103\1\104\1\105\15\103",
             "\1\uffff",
             "\1\uffff",
@@ -17780,6 +17666,7 @@
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
+            "",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -17797,7 +17684,6 @@
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
-            "",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -17813,6 +17699,7 @@
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
+            "",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -17830,34 +17717,34 @@
             "\1\uffff"
     };
 
-    static final short[] DFA52_eot = DFA.unpackEncodedString(DFA52_eotS);
-    static final short[] DFA52_eof = DFA.unpackEncodedString(DFA52_eofS);
-    static final char[] DFA52_min = DFA.unpackEncodedStringToUnsignedChars(DFA52_minS);
-    static final char[] DFA52_max = DFA.unpackEncodedStringToUnsignedChars(DFA52_maxS);
-    static final short[] DFA52_accept = DFA.unpackEncodedString(DFA52_acceptS);
-    static final short[] DFA52_special = DFA.unpackEncodedString(DFA52_specialS);
-    static final short[][] DFA52_transition;
+    static final short[] DFA53_eot = DFA.unpackEncodedString(DFA53_eotS);
+    static final short[] DFA53_eof = DFA.unpackEncodedString(DFA53_eofS);
+    static final char[] DFA53_min = DFA.unpackEncodedStringToUnsignedChars(DFA53_minS);
+    static final char[] DFA53_max = DFA.unpackEncodedStringToUnsignedChars(DFA53_maxS);
+    static final short[] DFA53_accept = DFA.unpackEncodedString(DFA53_acceptS);
+    static final short[] DFA53_special = DFA.unpackEncodedString(DFA53_specialS);
+    static final short[][] DFA53_transition;
 
     static {
-        int numStates = DFA52_transitionS.length;
-        DFA52_transition = new short[numStates][];
+        int numStates = DFA53_transitionS.length;
+        DFA53_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA52_transition[i] = DFA.unpackEncodedString(DFA52_transitionS[i]);
+            DFA53_transition[i] = DFA.unpackEncodedString(DFA53_transitionS[i]);
         }
     }
 
-    class DFA52 extends DFA {
+    class DFA53 extends DFA {
 
-        public DFA52(BaseRecognizer recognizer) {
+        public DFA53(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 52;
-            this.eot = DFA52_eot;
-            this.eof = DFA52_eof;
-            this.min = DFA52_min;
-            this.max = DFA52_max;
-            this.accept = DFA52_accept;
-            this.special = DFA52_special;
-            this.transition = DFA52_transition;
+            this.decisionNumber = 53;
+            this.eot = DFA53_eot;
+            this.eof = DFA53_eof;
+            this.min = DFA53_min;
+            this.max = DFA53_max;
+            this.accept = DFA53_accept;
+            this.special = DFA53_special;
+            this.transition = DFA53_transition;
         }
         public String getDescription() {
             return "880:3: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )";
@@ -17866,197 +17753,197 @@
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA52_53 = input.LA(1);
+                        int LA53_3 = input.LA(1);
 
                          
-                        int index52_53 = input.index();
+                        int index53_3 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 7;}
+                        if ( (synpred7()) ) {s = 9;}
 
-                        else if ( (true) ) {s = 99;}
+                        else if ( (true) ) {s = 10;}
 
                          
-                        input.seek(index52_53);
+                        input.seek(index53_3);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA52_34 = input.LA(1);
+                        int LA53_26 = input.LA(1);
 
                          
-                        int index52_34 = input.index();
+                        int index53_26 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 7;}
+                        if ( (synpred7()) ) {s = 9;}
 
-                        else if ( (true) ) {s = 66;}
+                        else if ( (true) ) {s = 46;}
 
                          
-                        input.seek(index52_34);
+                        input.seek(index53_26);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA52_26 = input.LA(1);
+                        int LA53_8 = input.LA(1);
 
                          
-                        int index52_26 = input.index();
+                        int index53_8 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 7;}
+                        if ( (((synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.FORALL)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EVAL)))||synpred7()||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT))))) ) {s = 9;}
 
-                        else if ( (true) ) {s = 46;}
+                        else if ( (true) ) {s = 16;}
 
                          
-                        input.seek(index52_26);
+                        input.seek(index53_8);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA52_32 = input.LA(1);
+                        int LA53_63 = input.LA(1);
 
                          
-                        int index52_32 = input.index();
+                        int index53_63 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 7;}
+                        if ( (synpred7()) ) {s = 9;}
 
-                        else if ( (true) ) {s = 46;}
+                        else if ( (true) ) {s = 115;}
 
                          
-                        input.seek(index52_32);
+                        input.seek(index53_63);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA52_2 = input.LA(1);
+                        int LA53_4 = input.LA(1);
 
                          
-                        int index52_2 = input.index();
+                        int index53_4 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_2==COLON) ) {s = 5;}
+                        if ( (synpred7()) ) {s = 9;}
 
-                        else if ( (LA52_2==LEFT_PAREN) ) {s = 6;}
+                        else if ( (true) ) {s = 11;}
 
-                        else if ( (LA52_2==ID) && (((synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||((synpred7()&&validateNotWithBinding())&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synp!
 red7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {s = 7;}
-
-                        else if ( (LA52_2==DOT) ) {s = 8;}
-
-                        else if ( (LA52_2==LEFT_SQUARE) ) {s = 9;}
-
                          
-                        input.seek(index52_2);
+                        input.seek(index53_4);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA52_25 = input.LA(1);
+                        int LA53_32 = input.LA(1);
 
                          
-                        int index52_25 = input.index();
+                        int index53_32 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 7;}
+                        if ( (synpred7()) ) {s = 9;}
 
-                        else if ( (true) ) {s = 45;}
+                        else if ( (true) ) {s = 65;}
 
                          
-                        input.seek(index52_25);
+                        input.seek(index53_32);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA52_50 = input.LA(1);
+                        int LA53_2 = input.LA(1);
 
                          
-                        int index52_50 = input.index();
+                        int index53_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 7;}
+                        if ( (LA53_2==COLON) ) {s = 5;}
 
-                        else if ( (true) ) {s = 94;}
+                        else if ( (LA53_2==DOT) ) {s = 6;}
 
+                        else if ( (LA53_2==LEFT_SQUARE) ) {s = 7;}
+
+                        else if ( (LA53_2==LEFT_PAREN) ) {s = 8;}
+
+                        else if ( (LA53_2==ID) && ((((synpred7()&&validateNotWithBinding())&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred!
 7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {s = 9;}
+
                          
-                        input.seek(index52_50);
+                        input.seek(index53_2);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA52_6 = input.LA(1);
+                        int LA53_44 = input.LA(1);
 
                          
-                        int index52_6 = input.index();
+                        int index53_44 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (((synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.FORALL)))||synpred7()||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EVAL))))) ) {s = 7;}
+                        if ( (synpred7()) ) {s = 9;}
 
-                        else if ( (true) ) {s = 14;}
+                        else if ( (true) ) {s = 82;}
 
                          
-                        input.seek(index52_6);
+                        input.seek(index53_44);
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA52_3 = input.LA(1);
+                        int LA53_25 = input.LA(1);
 
                          
-                        int index52_3 = input.index();
+                        int index53_25 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 7;}
+                        if ( (synpred7()) ) {s = 9;}
 
-                        else if ( (true) ) {s = 10;}
+                        else if ( (true) ) {s = 45;}
 
                          
-                        input.seek(index52_3);
+                        input.seek(index53_25);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
-                        int LA52_4 = input.LA(1);
+                        int LA53_31 = input.LA(1);
 
                          
-                        int index52_4 = input.index();
+                        int index53_31 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 7;}
+                        if ( (synpred7()) ) {s = 9;}
 
-                        else if ( (true) ) {s = 11;}
+                        else if ( (true) ) {s = 64;}
 
                          
-                        input.seek(index52_4);
+                        input.seek(index53_31);
                         if ( s>=0 ) return s;
                         break;
                     case 10 : 
-                        int LA52_31 = input.LA(1);
+                        int LA53_50 = input.LA(1);
 
                          
-                        int index52_31 = input.index();
+                        int index53_50 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 7;}
+                        if ( (synpred7()) ) {s = 9;}
 
-                        else if ( (true) ) {s = 64;}
+                        else if ( (true) ) {s = 95;}
 
                          
-                        input.seek(index52_31);
+                        input.seek(index53_50);
                         if ( s>=0 ) return s;
                         break;
             }
             if (backtracking>0) {failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 52, _s, input);
+                new NoViableAltException(getDescription(), 53, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA63_eotS =
+    static final String DFA64_eotS =
         "\13\uffff";
-    static final String DFA63_eofS =
+    static final String DFA64_eofS =
         "\13\uffff";
-    static final String DFA63_minS =
+    static final String DFA64_minS =
         "\1\123\1\130\2\4\1\0\1\123\1\0\4\uffff";
-    static final String DFA63_maxS =
+    static final String DFA64_maxS =
         "\1\123\1\130\2\u0080\1\0\1\132\1\0\4\uffff";
-    static final String DFA63_acceptS =
+    static final String DFA64_acceptS =
         "\7\uffff\1\1\1\2\1\1\1\2";
-    static final String DFA63_specialS =
-        "\1\6\1\2\1\1\1\5\1\4\1\3\1\0\4\uffff}>";
-    static final String[] DFA63_transitionS = {
+    static final String DFA64_specialS =
+        "\1\2\1\4\1\6\1\0\1\5\1\1\1\3\4\uffff}>";
+    static final String[] DFA64_transitionS = {
             "\1\1",
             "\1\2",
             "\124\3\1\4\1\3\1\5\46\3",
@@ -18070,34 +17957,34 @@
             ""
     };
 
-    static final short[] DFA63_eot = DFA.unpackEncodedString(DFA63_eotS);
-    static final short[] DFA63_eof = DFA.unpackEncodedString(DFA63_eofS);
-    static final char[] DFA63_min = DFA.unpackEncodedStringToUnsignedChars(DFA63_minS);
-    static final char[] DFA63_max = DFA.unpackEncodedStringToUnsignedChars(DFA63_maxS);
-    static final short[] DFA63_accept = DFA.unpackEncodedString(DFA63_acceptS);
-    static final short[] DFA63_special = DFA.unpackEncodedString(DFA63_specialS);
-    static final short[][] DFA63_transition;
+    static final short[] DFA64_eot = DFA.unpackEncodedString(DFA64_eotS);
+    static final short[] DFA64_eof = DFA.unpackEncodedString(DFA64_eofS);
+    static final char[] DFA64_min = DFA.unpackEncodedStringToUnsignedChars(DFA64_minS);
+    static final char[] DFA64_max = DFA.unpackEncodedStringToUnsignedChars(DFA64_maxS);
+    static final short[] DFA64_accept = DFA.unpackEncodedString(DFA64_acceptS);
+    static final short[] DFA64_special = DFA.unpackEncodedString(DFA64_specialS);
+    static final short[][] DFA64_transition;
 
     static {
-        int numStates = DFA63_transitionS.length;
-        DFA63_transition = new short[numStates][];
+        int numStates = DFA64_transitionS.length;
+        DFA64_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA63_transition[i] = DFA.unpackEncodedString(DFA63_transitionS[i]);
+            DFA64_transition[i] = DFA.unpackEncodedString(DFA64_transitionS[i]);
         }
     }
 
-    class DFA63 extends DFA {
+    class DFA64 extends DFA {
 
-        public DFA63(BaseRecognizer recognizer) {
+        public DFA64(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 63;
-            this.eot = DFA63_eot;
-            this.eof = DFA63_eof;
-            this.min = DFA63_min;
-            this.max = DFA63_max;
-            this.accept = DFA63_accept;
-            this.special = DFA63_special;
-            this.transition = DFA63_transition;
+            this.decisionNumber = 64;
+            this.eot = DFA64_eot;
+            this.eof = DFA64_eof;
+            this.min = DFA64_min;
+            this.max = DFA64_max;
+            this.accept = DFA64_accept;
+            this.special = DFA64_special;
+            this.transition = DFA64_transition;
         }
         public String getDescription() {
             return "974:2: ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )?";
@@ -18106,186 +17993,186 @@
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA63_6 = input.LA(1);
+                        int LA64_3 = input.LA(1);
 
                          
-                        int index63_6 = input.index();
+                        int index64_3 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.REVERSE))) ) {s = 9;}
+                        if ( (LA64_3==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 5;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RESULT))) ) {s = 10;}
+                        else if ( ((LA64_3>=VT_COMPILATION_UNIT && LA64_3<=STRING)||LA64_3==COMMA||(LA64_3>=AT && LA64_3<=MULTI_LINE_COMMENT)) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 3;}
 
+                        else if ( (LA64_3==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 6;}
+
                          
-                        input.seek(index63_6);
+                        input.seek(index64_3);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA63_2 = input.LA(1);
+                        int LA64_5 = input.LA(1);
 
                          
-                        int index63_2 = input.index();
+                        int index64_5 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((LA63_2>=VT_COMPILATION_UNIT && LA63_2<=STRING)||LA63_2==COMMA||(LA63_2>=AT && LA63_2<=MULTI_LINE_COMMENT)) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 3;}
+                        if ( (LA64_5==ID||LA64_5==COMMA) && ((validateIdentifierKey(DroolsSoftKeywords.REVERSE)))) {s = 9;}
 
-                        else if ( (LA63_2==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 4;}
+                        else if ( (LA64_5==RIGHT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.RESULT)))) {s = 10;}
 
-                        else if ( (LA63_2==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 5;}
-
                          
-                        input.seek(index63_2);
+                        input.seek(index64_5);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA63_1 = input.LA(1);
+                        int LA64_0 = input.LA(1);
 
                          
-                        int index63_1 = input.index();
+                        int index64_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA63_1==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 2;}
+                        if ( (LA64_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 1;}
 
                          
-                        input.seek(index63_1);
+                        input.seek(index64_0);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA63_5 = input.LA(1);
+                        int LA64_6 = input.LA(1);
 
                          
-                        int index63_5 = input.index();
+                        int index64_6 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA63_5==ID||LA63_5==COMMA) && ((validateIdentifierKey(DroolsSoftKeywords.REVERSE)))) {s = 9;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.REVERSE))) ) {s = 9;}
 
-                        else if ( (LA63_5==RIGHT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.RESULT)))) {s = 10;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RESULT))) ) {s = 10;}
 
                          
-                        input.seek(index63_5);
+                        input.seek(index64_6);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA63_4 = input.LA(1);
+                        int LA64_1 = input.LA(1);
 
                          
-                        int index63_4 = input.index();
+                        int index64_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.REVERSE))) ) {s = 7;}
+                        if ( (LA64_1==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 2;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RESULT))) ) {s = 8;}
-
                          
-                        input.seek(index63_4);
+                        input.seek(index64_1);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA63_3 = input.LA(1);
+                        int LA64_4 = input.LA(1);
 
                          
-                        int index63_3 = input.index();
+                        int index64_4 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA63_3==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 5;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.REVERSE))) ) {s = 7;}
 
-                        else if ( ((LA63_3>=VT_COMPILATION_UNIT && LA63_3<=STRING)||LA63_3==COMMA||(LA63_3>=AT && LA63_3<=MULTI_LINE_COMMENT)) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 3;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RESULT))) ) {s = 8;}
 
-                        else if ( (LA63_3==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 6;}
-
                          
-                        input.seek(index63_3);
+                        input.seek(index64_4);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA63_0 = input.LA(1);
+                        int LA64_2 = input.LA(1);
 
                          
-                        int index63_0 = input.index();
+                        int index64_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA63_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 1;}
+                        if ( ((LA64_2>=VT_COMPILATION_UNIT && LA64_2<=STRING)||LA64_2==COMMA||(LA64_2>=AT && LA64_2<=MULTI_LINE_COMMENT)) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 3;}
 
+                        else if ( (LA64_2==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 4;}
+
+                        else if ( (LA64_2==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 5;}
+
                          
-                        input.seek(index63_0);
+                        input.seek(index64_2);
                         if ( s>=0 ) return s;
                         break;
             }
             if (backtracking>0) {failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 63, _s, input);
+                new NoViableAltException(getDescription(), 64, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA66_eotS =
+    static final String DFA67_eotS =
         "\25\uffff";
-    static final String DFA66_eofS =
+    static final String DFA67_eofS =
         "\25\uffff";
-    static final String DFA66_minS =
-        "\1\122\1\4\1\uffff\1\4\1\uffff\1\0\1\uffff\1\4\2\0\3\4\1\0\1\4\1"+
-        "\uffff\1\4\4\0";
-    static final String DFA66_maxS =
-        "\1\164\1\u0080\1\uffff\1\u0080\1\uffff\1\0\1\uffff\1\u0080\2\0\3"+
-        "\u0080\1\0\1\u0080\1\uffff\1\u0080\4\0";
-    static final String DFA66_acceptS =
-        "\2\uffff\1\2\1\uffff\1\1\1\uffff\1\1\10\uffff\1\1\5\uffff";
-    static final String DFA66_specialS =
-        "\1\uffff\1\10\1\uffff\1\11\1\uffff\1\13\1\uffff\1\1\1\5\1\12\1\7"+
-        "\1\3\1\0\1\2\1\4\1\uffff\1\6\4\uffff}>";
-    static final String[] DFA66_transitionS = {
+    static final String DFA67_minS =
+        "\1\122\1\4\1\uffff\1\4\1\0\2\uffff\1\4\2\0\3\4\1\0\1\4\1\uffff"+
+        "\1\4\4\0";
+    static final String DFA67_maxS =
+        "\1\164\1\u0080\1\uffff\1\u0080\1\0\2\uffff\1\u0080\2\0\3\u0080"+
+        "\1\0\1\u0080\1\uffff\1\u0080\4\0";
+    static final String DFA67_acceptS =
+        "\2\uffff\1\2\2\uffff\2\1\10\uffff\1\1\5\uffff";
+    static final String DFA67_specialS =
+        "\1\uffff\1\7\1\uffff\1\13\1\3\2\uffff\1\1\1\5\1\4\1\12\1\2\1\0"+
+        "\1\6\1\10\1\uffff\1\11\4\uffff}>";
+    static final String[] DFA67_transitionS = {
             "\3\2\1\uffff\1\2\1\uffff\1\1\2\2\6\uffff\2\2\3\uffff\1\2\15"+
             "\uffff\1\2",
-            "\117\4\1\3\4\4\1\5\1\4\1\6\46\4",
+            "\117\5\1\3\4\5\1\4\1\5\1\6\46\5",
             "",
-            "\117\4\1\11\1\12\3\4\1\10\1\4\1\6\1\4\1\7\25\4\1\13\16\4",
-            "",
+            "\117\5\1\11\1\12\3\5\1\10\1\5\1\6\1\5\1\7\25\5\1\13\16\5",
             "\1\uffff",
             "",
-            "\117\4\1\14\4\4\1\15\1\4\1\6\46\4",
+            "",
+            "\117\5\1\14\4\5\1\15\1\5\1\6\46\5",
             "\1\uffff",
             "\1\uffff",
-            "\117\4\1\16\4\4\1\17\1\4\1\6\46\4",
-            "\124\4\1\17\1\4\1\6\30\4\1\20\15\4",
-            "\120\4\1\21\3\4\1\23\1\4\1\6\27\4\1\22\16\4",
+            "\117\5\1\16\4\5\1\17\1\5\1\6\46\5",
+            "\124\5\1\17\1\5\1\6\30\5\1\20\15\5",
+            "\120\5\1\21\3\5\1\23\1\5\1\6\27\5\1\22\16\5",
             "\1\uffff",
-            "\120\4\1\12\3\4\1\24\1\4\1\6\27\4\1\13\16\4",
+            "\120\5\1\12\3\5\1\24\1\5\1\6\27\5\1\13\16\5",
             "",
-            "\124\4\1\24\1\4\1\6\27\4\1\13\16\4",
+            "\124\5\1\24\1\5\1\6\27\5\1\13\16\5",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff"
     };
 
-    static final short[] DFA66_eot = DFA.unpackEncodedString(DFA66_eotS);
-    static final short[] DFA66_eof = DFA.unpackEncodedString(DFA66_eofS);
-    static final char[] DFA66_min = DFA.unpackEncodedStringToUnsignedChars(DFA66_minS);
-    static final char[] DFA66_max = DFA.unpackEncodedStringToUnsignedChars(DFA66_maxS);
-    static final short[] DFA66_accept = DFA.unpackEncodedString(DFA66_acceptS);
-    static final short[] DFA66_special = DFA.unpackEncodedString(DFA66_specialS);
-    static final short[][] DFA66_transition;
+    static final short[] DFA67_eot = DFA.unpackEncodedString(DFA67_eotS);
+    static final short[] DFA67_eof = DFA.unpackEncodedString(DFA67_eofS);
+    static final char[] DFA67_min = DFA.unpackEncodedStringToUnsignedChars(DFA67_minS);
+    static final char[] DFA67_max = DFA.unpackEncodedStringToUnsignedChars(DFA67_maxS);
+    static final short[] DFA67_accept = DFA.unpackEncodedString(DFA67_acceptS);
+    static final short[] DFA67_special = DFA.unpackEncodedString(DFA67_specialS);
+    static final short[][] DFA67_transition;
 
     static {
-        int numStates = DFA66_transitionS.length;
-        DFA66_transition = new short[numStates][];
+        int numStates = DFA67_transitionS.length;
+        DFA67_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA66_transition[i] = DFA.unpackEncodedString(DFA66_transitionS[i]);
+            DFA67_transition[i] = DFA.unpackEncodedString(DFA67_transitionS[i]);
         }
     }
 
-    class DFA66 extends DFA {
+    class DFA67 extends DFA {
 
-        public DFA66(BaseRecognizer recognizer) {
+        public DFA67(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 66;
-            this.eot = DFA66_eot;
-            this.eof = DFA66_eof;
-            this.min = DFA66_min;
-            this.max = DFA66_max;
-            this.accept = DFA66_accept;
-            this.special = DFA66_special;
-            this.transition = DFA66_transition;
+            this.decisionNumber = 67;
+            this.eot = DFA67_eot;
+            this.eof = DFA67_eof;
+            this.min = DFA67_min;
+            this.max = DFA67_max;
+            this.accept = DFA67_accept;
+            this.special = DFA67_special;
+            this.transition = DFA67_transition;
         }
         public String getDescription() {
             return "1049:3: ( ( LEFT_PAREN )=>args= paren_chunk )?";
@@ -18294,105 +18181,99 @@
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA66_12 = input.LA(1);
+                        int LA67_12 = input.LA(1);
 
                          
-                        int index66_12 = input.index();
+                        int index67_12 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA66_12==DOT) ) {s = 17;}
+                        if ( (LA67_12==DOT) ) {s = 17;}
 
-                        else if ( (LA66_12==LEFT_SQUARE) ) {s = 18;}
+                        else if ( (LA67_12==LEFT_SQUARE) ) {s = 18;}
 
-                        else if ( (LA66_12==LEFT_PAREN) ) {s = 19;}
+                        else if ( (LA67_12==LEFT_PAREN) ) {s = 19;}
 
-                        else if ( (LA66_12==RIGHT_PAREN) && (synpred8())) {s = 6;}
+                        else if ( (LA67_12==RIGHT_PAREN) && (synpred8())) {s = 6;}
 
-                        else if ( ((LA66_12>=VT_COMPILATION_UNIT && LA66_12<=ID)||(LA66_12>=DOT_STAR && LA66_12<=STRING)||LA66_12==COMMA||(LA66_12>=AT && LA66_12<=NULL)||(LA66_12>=RIGHT_SQUARE && LA66_12<=MULTI_LINE_COMMENT)) && (synpred8())) {s = 4;}
+                        else if ( ((LA67_12>=VT_COMPILATION_UNIT && LA67_12<=ID)||(LA67_12>=DOT_STAR && LA67_12<=STRING)||LA67_12==COMMA||(LA67_12>=AT && LA67_12<=NULL)||(LA67_12>=RIGHT_SQUARE && LA67_12<=MULTI_LINE_COMMENT)) && (synpred8())) {s = 5;}
 
                          
-                        input.seek(index66_12);
+                        input.seek(index67_12);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA66_7 = input.LA(1);
+                        int LA67_7 = input.LA(1);
 
                          
-                        int index66_7 = input.index();
+                        int index67_7 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA66_7==RIGHT_PAREN) && (synpred8())) {s = 6;}
+                        if ( (LA67_7==ID) ) {s = 12;}
 
-                        else if ( (LA66_7==ID) ) {s = 12;}
+                        else if ( (LA67_7==LEFT_PAREN) ) {s = 13;}
 
-                        else if ( (LA66_7==LEFT_PAREN) ) {s = 13;}
+                        else if ( (LA67_7==RIGHT_PAREN) && (synpred8())) {s = 6;}
 
-                        else if ( ((LA66_7>=VT_COMPILATION_UNIT && LA66_7<=SEMICOLON)||(LA66_7>=DOT && LA66_7<=STRING)||LA66_7==COMMA||(LA66_7>=AT && LA66_7<=MULTI_LINE_COMMENT)) && (synpred8())) {s = 4;}
+                        else if ( ((LA67_7>=VT_COMPILATION_UNIT && LA67_7<=SEMICOLON)||(LA67_7>=DOT && LA67_7<=STRING)||LA67_7==COMMA||(LA67_7>=AT && LA67_7<=MULTI_LINE_COMMENT)) && (synpred8())) {s = 5;}
 
                          
-                        input.seek(index66_7);
+                        input.seek(index67_7);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA66_13 = input.LA(1);
+                        int LA67_11 = input.LA(1);
 
                          
-                        int index66_13 = input.index();
+                        int index67_11 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred8()) ) {s = 15;}
+                        if ( (LA67_11==RIGHT_SQUARE) ) {s = 16;}
 
-                        else if ( (true) ) {s = 2;}
+                        else if ( (LA67_11==RIGHT_PAREN) && (synpred8())) {s = 6;}
 
+                        else if ( ((LA67_11>=VT_COMPILATION_UNIT && LA67_11<=STRING)||LA67_11==COMMA||(LA67_11>=AT && LA67_11<=LEFT_SQUARE)||(LA67_11>=THEN && LA67_11<=MULTI_LINE_COMMENT)) && (synpred8())) {s = 5;}
+
+                        else if ( (LA67_11==LEFT_PAREN) && (synpred8())) {s = 15;}
+
                          
-                        input.seek(index66_13);
+                        input.seek(index67_11);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA66_11 = input.LA(1);
+                        int LA67_4 = input.LA(1);
 
                          
-                        int index66_11 = input.index();
+                        int index67_4 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA66_11==RIGHT_SQUARE) ) {s = 16;}
+                        if ( (synpred8()) ) {s = 6;}
 
-                        else if ( (LA66_11==RIGHT_PAREN) && (synpred8())) {s = 6;}
+                        else if ( (true) ) {s = 2;}
 
-                        else if ( ((LA66_11>=VT_COMPILATION_UNIT && LA66_11<=STRING)||LA66_11==COMMA||(LA66_11>=AT && LA66_11<=LEFT_SQUARE)||(LA66_11>=THEN && LA66_11<=MULTI_LINE_COMMENT)) && (synpred8())) {s = 4;}
-
-                        else if ( (LA66_11==LEFT_PAREN) && (synpred8())) {s = 15;}
-
                          
-                        input.seek(index66_11);
+                        input.seek(index67_4);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA66_14 = input.LA(1);
+                        int LA67_9 = input.LA(1);
 
                          
-                        int index66_14 = input.index();
+                        int index67_9 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA66_14==LEFT_SQUARE) ) {s = 11;}
+                        if ( (synpred8()) ) {s = 6;}
 
-                        else if ( (LA66_14==LEFT_PAREN) ) {s = 20;}
+                        else if ( (true) ) {s = 2;}
 
-                        else if ( (LA66_14==DOT) ) {s = 10;}
-
-                        else if ( (LA66_14==RIGHT_PAREN) && (synpred8())) {s = 6;}
-
-                        else if ( ((LA66_14>=VT_COMPILATION_UNIT && LA66_14<=ID)||(LA66_14>=DOT_STAR && LA66_14<=STRING)||LA66_14==COMMA||(LA66_14>=AT && LA66_14<=NULL)||(LA66_14>=RIGHT_SQUARE && LA66_14<=MULTI_LINE_COMMENT)) && (synpred8())) {s = 4;}
-
                          
-                        input.seek(index66_14);
+                        input.seek(index67_9);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA66_8 = input.LA(1);
+                        int LA67_8 = input.LA(1);
 
                          
-                        int index66_8 = input.index();
+                        int index67_8 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred8()) ) {s = 6;}
@@ -18400,169 +18281,365 @@
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index66_8);
+                        input.seek(index67_8);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA66_16 = input.LA(1);
+                        int LA67_13 = input.LA(1);
 
                          
-                        int index66_16 = input.index();
+                        int index67_13 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA66_16==RIGHT_PAREN) && (synpred8())) {s = 6;}
+                        if ( (synpred8()) ) {s = 15;}
 
-                        else if ( (LA66_16==LEFT_SQUARE) ) {s = 11;}
+                        else if ( (true) ) {s = 2;}
 
-                        else if ( (LA66_16==LEFT_PAREN) ) {s = 20;}
-
-                        else if ( ((LA66_16>=VT_COMPILATION_UNIT && LA66_16<=STRING)||LA66_16==COMMA||(LA66_16>=AT && LA66_16<=NULL)||(LA66_16>=RIGHT_SQUARE && LA66_16<=MULTI_LINE_COMMENT)) && (synpred8())) {s = 4;}
-
                          
-                        input.seek(index66_16);
+                        input.seek(index67_13);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA66_10 = input.LA(1);
+                        int LA67_1 = input.LA(1);
 
                          
-                        int index66_10 = input.index();
+                        int index67_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA66_10==ID) ) {s = 14;}
+                        if ( (LA67_1==ID) ) {s = 3;}
 
-                        else if ( (LA66_10==RIGHT_PAREN) && (synpred8())) {s = 6;}
+                        else if ( (LA67_1==LEFT_PAREN) ) {s = 4;}
 
-                        else if ( ((LA66_10>=VT_COMPILATION_UNIT && LA66_10<=SEMICOLON)||(LA66_10>=DOT && LA66_10<=STRING)||LA66_10==COMMA||(LA66_10>=AT && LA66_10<=MULTI_LINE_COMMENT)) && (synpred8())) {s = 4;}
+                        else if ( ((LA67_1>=VT_COMPILATION_UNIT && LA67_1<=SEMICOLON)||(LA67_1>=DOT && LA67_1<=STRING)||LA67_1==COMMA||(LA67_1>=AT && LA67_1<=MULTI_LINE_COMMENT)) && (synpred8())) {s = 5;}
 
-                        else if ( (LA66_10==LEFT_PAREN) && (synpred8())) {s = 15;}
+                        else if ( (LA67_1==RIGHT_PAREN) && (synpred8())) {s = 6;}
 
                          
-                        input.seek(index66_10);
+                        input.seek(index67_1);
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA66_1 = input.LA(1);
+                        int LA67_14 = input.LA(1);
 
                          
-                        int index66_1 = input.index();
+                        int index67_14 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA66_1==ID) ) {s = 3;}
+                        if ( (LA67_14==LEFT_SQUARE) ) {s = 11;}
 
-                        else if ( ((LA66_1>=VT_COMPILATION_UNIT && LA66_1<=SEMICOLON)||(LA66_1>=DOT && LA66_1<=STRING)||LA66_1==COMMA||(LA66_1>=AT && LA66_1<=MULTI_LINE_COMMENT)) && (synpred8())) {s = 4;}
+                        else if ( (LA67_14==LEFT_PAREN) ) {s = 20;}
 
-                        else if ( (LA66_1==LEFT_PAREN) ) {s = 5;}
+                        else if ( (LA67_14==DOT) ) {s = 10;}
 
-                        else if ( (LA66_1==RIGHT_PAREN) && (synpred8())) {s = 6;}
+                        else if ( (LA67_14==RIGHT_PAREN) && (synpred8())) {s = 6;}
 
+                        else if ( ((LA67_14>=VT_COMPILATION_UNIT && LA67_14<=ID)||(LA67_14>=DOT_STAR && LA67_14<=STRING)||LA67_14==COMMA||(LA67_14>=AT && LA67_14<=NULL)||(LA67_14>=RIGHT_SQUARE && LA67_14<=MULTI_LINE_COMMENT)) && (synpred8())) {s = 5;}
+
                          
-                        input.seek(index66_1);
+                        input.seek(index67_14);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
-                        int LA66_3 = input.LA(1);
+                        int LA67_16 = input.LA(1);
 
                          
-                        int index66_3 = input.index();
+                        int index67_16 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA66_3==COLON) ) {s = 7;}
+                        if ( (LA67_16==LEFT_PAREN) ) {s = 20;}
 
-                        else if ( (LA66_3==LEFT_PAREN) ) {s = 8;}
+                        else if ( (LA67_16==LEFT_SQUARE) ) {s = 11;}
 
-                        else if ( (LA66_3==ID) ) {s = 9;}
+                        else if ( (LA67_16==RIGHT_PAREN) && (synpred8())) {s = 6;}
 
-                        else if ( (LA66_3==RIGHT_PAREN) && (synpred8())) {s = 6;}
+                        else if ( ((LA67_16>=VT_COMPILATION_UNIT && LA67_16<=STRING)||LA67_16==COMMA||(LA67_16>=AT && LA67_16<=NULL)||(LA67_16>=RIGHT_SQUARE && LA67_16<=MULTI_LINE_COMMENT)) && (synpred8())) {s = 5;}
 
-                        else if ( (LA66_3==DOT) ) {s = 10;}
+                         
+                        input.seek(index67_16);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA67_10 = input.LA(1);
 
-                        else if ( (LA66_3==LEFT_SQUARE) ) {s = 11;}
+                         
+                        int index67_10 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA67_10==ID) ) {s = 14;}
 
-                        else if ( ((LA66_3>=VT_COMPILATION_UNIT && LA66_3<=SEMICOLON)||(LA66_3>=DOT_STAR && LA66_3<=STRING)||LA66_3==COMMA||LA66_3==AT||(LA66_3>=EQUALS && LA66_3<=NULL)||(LA66_3>=RIGHT_SQUARE && LA66_3<=MULTI_LINE_COMMENT)) && (synpred8())) {s = 4;}
+                        else if ( (LA67_10==RIGHT_PAREN) && (synpred8())) {s = 6;}
 
+                        else if ( ((LA67_10>=VT_COMPILATION_UNIT && LA67_10<=SEMICOLON)||(LA67_10>=DOT && LA67_10<=STRING)||LA67_10==COMMA||(LA67_10>=AT && LA67_10<=MULTI_LINE_COMMENT)) && (synpred8())) {s = 5;}
+
+                        else if ( (LA67_10==LEFT_PAREN) && (synpred8())) {s = 15;}
+
                          
-                        input.seek(index66_3);
+                        input.seek(index67_10);
                         if ( s>=0 ) return s;
                         break;
-                    case 10 : 
-                        int LA66_9 = input.LA(1);
+                    case 11 : 
+                        int LA67_3 = input.LA(1);
 
                          
-                        int index66_9 = input.index();
+                        int index67_3 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred8()) ) {s = 6;}
+                        if ( (LA67_3==COLON) ) {s = 7;}
 
-                        else if ( (true) ) {s = 2;}
+                        else if ( (LA67_3==LEFT_PAREN) ) {s = 8;}
 
+                        else if ( (LA67_3==ID) ) {s = 9;}
+
+                        else if ( (LA67_3==DOT) ) {s = 10;}
+
+                        else if ( (LA67_3==LEFT_SQUARE) ) {s = 11;}
+
+                        else if ( (LA67_3==RIGHT_PAREN) && (synpred8())) {s = 6;}
+
+                        else if ( ((LA67_3>=VT_COMPILATION_UNIT && LA67_3<=SEMICOLON)||(LA67_3>=DOT_STAR && LA67_3<=STRING)||LA67_3==COMMA||LA67_3==AT||(LA67_3>=EQUALS && LA67_3<=NULL)||(LA67_3>=RIGHT_SQUARE && LA67_3<=MULTI_LINE_COMMENT)) && (synpred8())) {s = 5;}
+
                          
-                        input.seek(index66_9);
+                        input.seek(index67_3);
                         if ( s>=0 ) return s;
                         break;
-                    case 11 : 
-                        int LA66_5 = input.LA(1);
+            }
+            if (backtracking>0) {failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 67, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA69_eotS =
+        "\27\uffff";
+    static final String DFA69_eofS =
+        "\27\uffff";
+    static final String DFA69_minS =
+        "\1\122\1\4\2\uffff\1\4\1\0\1\uffff\1\4\2\0\3\4\1\0\3\4\1\0\1\4"+
+        "\2\0\1\4\1\0";
+    static final String DFA69_maxS =
+        "\1\164\1\u0080\2\uffff\1\u0080\1\0\1\uffff\1\u0080\2\0\3\u0080"+
+        "\1\0\3\u0080\1\0\1\u0080\2\0\1\u0080\1\0";
+    static final String DFA69_acceptS =
+        "\2\uffff\1\2\1\3\2\uffff\1\1\20\uffff";
+    static final String DFA69_specialS =
+        "\5\uffff\1\6\2\uffff\1\1\1\0\3\uffff\1\2\3\uffff\1\4\1\uffff\1"+
+        "\3\1\5\2\uffff}>";
+    static final String[] DFA69_transitionS = {
+            "\3\3\1\uffff\1\3\1\uffff\1\1\2\3\6\uffff\2\3\3\uffff\1\3\13"+
+            "\uffff\1\2\1\uffff\1\3",
+            "\117\6\1\4\4\6\1\5\50\6",
+            "",
+            "",
+            "\117\6\1\11\1\12\3\6\1\10\3\6\1\7\25\6\1\13\16\6",
+            "\1\uffff",
+            "",
+            "\117\6\1\14\4\6\1\15\50\6",
+            "\1\uffff",
+            "\1\uffff",
+            "\117\6\1\16\55\6",
+            "\157\6\1\17\15\6",
+            "\120\6\1\20\3\6\1\21\31\6\1\22\16\6",
+            "\1\uffff",
+            "\120\6\1\12\3\6\1\23\31\6\1\13\16\6",
+            "\124\6\1\24\31\6\1\13\16\6",
+            "\117\6\1\25\55\6",
+            "\1\uffff",
+            "\157\6\1\26\15\6",
+            "\1\uffff",
+            "\1\uffff",
+            "\120\6\1\20\3\6\1\21\31\6\1\22\16\6",
+            "\1\uffff"
+    };
 
+    static final short[] DFA69_eot = DFA.unpackEncodedString(DFA69_eotS);
+    static final short[] DFA69_eof = DFA.unpackEncodedString(DFA69_eofS);
+    static final char[] DFA69_min = DFA.unpackEncodedStringToUnsignedChars(DFA69_minS);
+    static final char[] DFA69_max = DFA.unpackEncodedStringToUnsignedChars(DFA69_maxS);
+    static final short[] DFA69_accept = DFA.unpackEncodedString(DFA69_acceptS);
+    static final short[] DFA69_special = DFA.unpackEncodedString(DFA69_specialS);
+    static final short[][] DFA69_transition;
+
+    static {
+        int numStates = DFA69_transitionS.length;
+        DFA69_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA69_transition[i] = DFA.unpackEncodedString(DFA69_transitionS[i]);
+        }
+    }
+
+    class DFA69 extends DFA {
+
+        public DFA69(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 69;
+            this.eot = DFA69_eot;
+            this.eof = DFA69_eof;
+            this.min = DFA69_min;
+            this.max = DFA69_max;
+            this.accept = DFA69_accept;
+            this.special = DFA69_special;
+            this.transition = DFA69_transition;
+        }
+        public String getDescription() {
+            return "1063:4: ({...}? paren_chunk | square_chunk )?";
+        }
+        public int specialStateTransition(int s, IntStream input) throws NoViableAltException {
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA69_9 = input.LA(1);
+
                          
-                        int index66_5 = input.index();
+                        int index69_9 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred8()) ) {s = 6;}
+                        if ( (input.LA(1) == LEFT_PAREN) ) {s = 6;}
 
-                        else if ( (true) ) {s = 2;}
+                        else if ( (true) ) {s = 3;}
 
                          
-                        input.seek(index66_5);
+                        input.seek(index69_9);
                         if ( s>=0 ) return s;
                         break;
+                    case 1 : 
+                        int LA69_8 = input.LA(1);
+
+                         
+                        int index69_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (input.LA(1) == LEFT_PAREN) ) {s = 6;}
+
+                        else if ( (true) ) {s = 3;}
+
+                         
+                        input.seek(index69_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA69_13 = input.LA(1);
+
+                         
+                        int index69_13 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (input.LA(1) == LEFT_PAREN) ) {s = 6;}
+
+                        else if ( (true) ) {s = 3;}
+
+                         
+                        input.seek(index69_13);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA69_19 = input.LA(1);
+
+                         
+                        int index69_19 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (input.LA(1) == LEFT_PAREN) ) {s = 6;}
+
+                        else if ( (true) ) {s = 3;}
+
+                         
+                        input.seek(index69_19);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA69_17 = input.LA(1);
+
+                         
+                        int index69_17 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (input.LA(1) == LEFT_PAREN) ) {s = 6;}
+
+                        else if ( (true) ) {s = 3;}
+
+                         
+                        input.seek(index69_17);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA69_20 = input.LA(1);
+
+                         
+                        int index69_20 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (input.LA(1) == LEFT_PAREN) ) {s = 6;}
+
+                        else if ( (true) ) {s = 3;}
+
+                         
+                        input.seek(index69_20);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA69_5 = input.LA(1);
+
+                         
+                        int index69_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (input.LA(1) == LEFT_PAREN) ) {s = 6;}
+
+                        else if ( (true) ) {s = 3;}
+
+                         
+                        input.seek(index69_5);
+                        if ( s>=0 ) return s;
+                        break;
             }
             if (backtracking>0) {failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 66, _s, input);
+                new NoViableAltException(getDescription(), 69, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA81_eotS =
+    static final String DFA82_eotS =
         "\40\uffff";
-    static final String DFA81_eofS =
+    static final String DFA82_eofS =
         "\40\uffff";
-    static final String DFA81_minS =
-        "\1\131\1\uffff\2\123\1\0\1\uffff\1\123\1\0\1\123\6\0\1\4\1\162\2"+
-        "\4\15\0";
-    static final String DFA81_maxS =
-        "\1\142\1\uffff\1\157\1\162\1\0\1\uffff\1\162\1\0\1\123\6\0\1\u0080"+
-        "\1\162\2\u0080\15\0";
-    static final String DFA81_acceptS =
-        "\1\uffff\1\2\3\uffff\1\1\32\uffff";
-    static final String DFA81_specialS =
-        "\2\uffff\1\6\1\11\1\12\1\uffff\1\10\1\5\1\uffff\1\3\1\1\1\2\1\7"+
-        "\1\0\1\4\21\uffff}>";
-    static final String[] DFA81_transitionS = {
+    static final String DFA82_minS =
+        "\1\131\1\uffff\2\123\1\uffff\1\0\1\123\1\0\1\123\1\4\6\0\1\162"+
+        "\1\4\2\0\1\4\13\0";
+    static final String DFA82_maxS =
+        "\1\142\1\uffff\1\157\1\162\1\uffff\1\0\1\162\1\0\1\123\1\u0080"+
+        "\6\0\1\162\1\u0080\2\0\1\u0080\13\0";
+    static final String DFA82_acceptS =
+        "\1\uffff\1\2\2\uffff\1\1\33\uffff";
+    static final String DFA82_specialS =
+        "\2\uffff\1\14\1\12\1\uffff\1\13\1\11\1\2\2\uffff\1\7\1\3\1\1\1"+
+        "\5\1\4\1\10\2\uffff\1\6\1\0\14\uffff}>";
+    static final String[] DFA82_transitionS = {
             "\2\1\6\uffff\1\2\1\1",
             "",
-            "\1\3\4\uffff\1\4\20\uffff\7\5",
-            "\1\6\1\1\2\uffff\1\5\1\7\3\uffff\1\1\2\uffff\2\5\10\uffff\6"+
-            "\1\1\10\2\5\1\1",
-            "\1\uffff",
+            "\1\3\4\uffff\1\5\20\uffff\7\4",
+            "\1\6\1\1\2\uffff\1\4\1\7\3\uffff\1\1\2\uffff\2\4\10\uffff"+
+            "\6\1\1\10\2\4\1\1",
             "",
-            "\1\11\1\5\2\uffff\1\12\1\17\2\5\4\uffff\1\15\1\13\2\5\14\uffff"+
-            "\1\1\1\14\1\16\1\5",
             "\1\uffff",
+            "\1\12\1\4\2\uffff\1\13\1\11\2\4\4\uffff\1\16\1\14\2\4\14\uffff"+
+            "\1\1\1\15\1\17\1\4",
+            "\1\uffff",
             "\1\20",
+            "\117\31\1\21\3\31\1\24\1\22\1\31\1\23\4\31\1\27\1\25\17\31"+
+            "\1\26\1\30\17\31",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
-            "\117\30\1\21\3\30\1\22\1\27\1\30\1\31\4\30\1\25\1\23\17\30\1"+
-            "\24\1\26\17\30",
             "\1\32",
-            "\120\30\1\36\3\30\1\35\1\37\1\33\27\30\1\34\16\30",
-            "\124\30\1\35\1\37\1\33\46\30",
+            "\120\31\1\36\3\31\1\35\1\37\1\33\27\31\1\34\16\31",
             "\1\uffff",
             "\1\uffff",
+            "\124\31\1\35\1\37\1\33\46\31",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -18576,34 +18653,34 @@
             "\1\uffff"
     };
 
-    static final short[] DFA81_eot = DFA.unpackEncodedString(DFA81_eotS);
-    static final short[] DFA81_eof = DFA.unpackEncodedString(DFA81_eofS);
-    static final char[] DFA81_min = DFA.unpackEncodedStringToUnsignedChars(DFA81_minS);
-    static final char[] DFA81_max = DFA.unpackEncodedStringToUnsignedChars(DFA81_maxS);
-    static final short[] DFA81_accept = DFA.unpackEncodedString(DFA81_acceptS);
-    static final short[] DFA81_special = DFA.unpackEncodedString(DFA81_specialS);
-    static final short[][] DFA81_transition;
+    static final short[] DFA82_eot = DFA.unpackEncodedString(DFA82_eotS);
+    static final short[] DFA82_eof = DFA.unpackEncodedString(DFA82_eofS);
+    static final char[] DFA82_min = DFA.unpackEncodedStringToUnsignedChars(DFA82_minS);
+    static final char[] DFA82_max = DFA.unpackEncodedStringToUnsignedChars(DFA82_maxS);
+    static final short[] DFA82_accept = DFA.unpackEncodedString(DFA82_acceptS);
+    static final short[] DFA82_special = DFA.unpackEncodedString(DFA82_specialS);
+    static final short[][] DFA82_transition;
 
     static {
-        int numStates = DFA81_transitionS.length;
-        DFA81_transition = new short[numStates][];
+        int numStates = DFA82_transitionS.length;
+        DFA82_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA81_transition[i] = DFA.unpackEncodedString(DFA81_transitionS[i]);
+            DFA82_transition[i] = DFA.unpackEncodedString(DFA82_transitionS[i]);
         }
     }
 
-    class DFA81 extends DFA {
+    class DFA82 extends DFA {
 
-        public DFA81(BaseRecognizer recognizer) {
+        public DFA82(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 81;
-            this.eot = DFA81_eot;
-            this.eof = DFA81_eof;
-            this.min = DFA81_min;
-            this.max = DFA81_max;
-            this.accept = DFA81_accept;
-            this.special = DFA81_special;
-            this.transition = DFA81_transition;
+            this.decisionNumber = 82;
+            this.eot = DFA82_eot;
+            this.eof = DFA82_eof;
+            this.min = DFA82_min;
+            this.max = DFA82_max;
+            this.accept = DFA82_accept;
+            this.special = DFA82_special;
+            this.transition = DFA82_transition;
         }
         public String getDescription() {
             return "()* loopback of 1173:25: ({...}? => DOUBLE_PIPE and_restr_connective )*";
@@ -18612,228 +18689,259 @@
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA81_13 = input.LA(1);
+                        int LA82_19 = input.LA(1);
 
                          
-                        int index81_13 = input.index();
+                        int index82_19 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 5;}
+                        if ( ((validateRestr())) ) {s = 4;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index81_13);
+                        input.seek(index82_19);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA81_10 = input.LA(1);
+                        int LA82_12 = input.LA(1);
 
                          
-                        int index81_10 = input.index();
+                        int index82_12 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 5;}
+                        if ( ((validateRestr())) ) {s = 4;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index81_10);
+                        input.seek(index82_12);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA81_11 = input.LA(1);
+                        int LA82_7 = input.LA(1);
 
                          
-                        int index81_11 = input.index();
+                        int index82_7 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 5;}
+                        if ( ((validateRestr())) ) {s = 4;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index81_11);
+                        input.seek(index82_7);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA81_9 = input.LA(1);
+                        int LA82_11 = input.LA(1);
 
                          
-                        int index81_9 = input.index();
+                        int index82_11 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 5;}
+                        if ( ((validateRestr())) ) {s = 4;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index81_9);
+                        input.seek(index82_11);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA81_14 = input.LA(1);
+                        int LA82_14 = input.LA(1);
 
                          
-                        int index81_14 = input.index();
+                        int index82_14 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 5;}
+                        if ( ((validateRestr())) ) {s = 4;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index81_14);
+                        input.seek(index82_14);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA81_7 = input.LA(1);
+                        int LA82_13 = input.LA(1);
 
                          
-                        int index81_7 = input.index();
+                        int index82_13 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 5;}
+                        if ( ((validateRestr())) ) {s = 4;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index81_7);
+                        input.seek(index82_13);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA81_2 = input.LA(1);
+                        int LA82_18 = input.LA(1);
 
                          
-                        int index81_2 = input.index();
+                        int index82_18 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA81_2==ID) ) {s = 3;}
+                        if ( ((validateRestr())) ) {s = 4;}
 
-                        else if ( (LA81_2==LEFT_PAREN) ) {s = 4;}
+                        else if ( (true) ) {s = 1;}
 
-                        else if ( ((LA81_2>=EQUAL && LA81_2<=GRAVE_ACCENT)) && ((validateRestr()))) {s = 5;}
-
                          
-                        input.seek(index81_2);
+                        input.seek(index82_18);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA81_12 = input.LA(1);
+                        int LA82_10 = input.LA(1);
 
                          
-                        int index81_12 = input.index();
+                        int index82_10 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 5;}
+                        if ( ((validateRestr())) ) {s = 4;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index81_12);
+                        input.seek(index82_10);
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA81_6 = input.LA(1);
+                        int LA82_15 = input.LA(1);
 
                          
-                        int index81_6 = input.index();
+                        int index82_15 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA81_6==ID) ) {s = 9;}
+                        if ( ((validateRestr())) ) {s = 4;}
 
-                        else if ( (LA81_6==STRING) ) {s = 10;}
+                        else if ( (true) ) {s = 1;}
 
-                        else if ( (LA81_6==INT) ) {s = 11;}
+                         
+                        input.seek(index82_15);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA82_6 = input.LA(1);
 
-                        else if ( (LA81_6==FLOAT) ) {s = 12;}
+                         
+                        int index82_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA82_6==LEFT_PAREN) ) {s = 9;}
 
-                        else if ( (LA81_6==BOOL) ) {s = 13;}
+                        else if ( (LA82_6==ID) ) {s = 10;}
 
-                        else if ( (LA81_6==NULL) ) {s = 14;}
+                        else if ( (LA82_6==STRING) ) {s = 11;}
 
-                        else if ( (LA81_6==LEFT_PAREN) ) {s = 15;}
+                        else if ( (LA82_6==INT) ) {s = 12;}
 
-                        else if ( (LA81_6==DOT||(LA81_6>=COMMA && LA81_6<=RIGHT_PAREN)||(LA81_6>=DOUBLE_PIPE && LA81_6<=DOUBLE_AMPER)||LA81_6==LEFT_SQUARE) && ((validateRestr()))) {s = 5;}
+                        else if ( (LA82_6==FLOAT) ) {s = 13;}
 
-                        else if ( (LA81_6==GRAVE_ACCENT) ) {s = 1;}
+                        else if ( (LA82_6==BOOL) ) {s = 14;}
 
+                        else if ( (LA82_6==NULL) ) {s = 15;}
+
+                        else if ( (LA82_6==GRAVE_ACCENT) ) {s = 1;}
+
+                        else if ( (LA82_6==DOT||(LA82_6>=COMMA && LA82_6<=RIGHT_PAREN)||(LA82_6>=DOUBLE_PIPE && LA82_6<=DOUBLE_AMPER)||LA82_6==LEFT_SQUARE) && ((validateRestr()))) {s = 4;}
+
                          
-                        input.seek(index81_6);
+                        input.seek(index82_6);
                         if ( s>=0 ) return s;
                         break;
-                    case 9 : 
-                        int LA81_3 = input.LA(1);
+                    case 10 : 
+                        int LA82_3 = input.LA(1);
 
                          
-                        int index81_3 = input.index();
+                        int index82_3 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA81_3==DOT||LA81_3==COLON||(LA81_3>=EQUAL && LA81_3<=NOT_EQUAL)||LA81_3==LEFT_SQUARE) ) {s = 1;}
+                        if ( (LA82_3==DOT||LA82_3==COLON||(LA82_3>=EQUAL && LA82_3<=NOT_EQUAL)||LA82_3==LEFT_SQUARE) ) {s = 1;}
 
-                        else if ( (LA81_3==ID) ) {s = 6;}
+                        else if ( (LA82_3==ID) ) {s = 6;}
 
-                        else if ( (LA81_3==STRING||(LA81_3>=BOOL && LA81_3<=INT)||(LA81_3>=FLOAT && LA81_3<=NULL)) && ((validateRestr()))) {s = 5;}
+                        else if ( (LA82_3==STRING||(LA82_3>=BOOL && LA82_3<=INT)||(LA82_3>=FLOAT && LA82_3<=NULL)) && ((validateRestr()))) {s = 4;}
 
-                        else if ( (LA81_3==LEFT_PAREN) ) {s = 7;}
+                        else if ( (LA82_3==LEFT_PAREN) ) {s = 7;}
 
-                        else if ( (LA81_3==GRAVE_ACCENT) ) {s = 8;}
+                        else if ( (LA82_3==GRAVE_ACCENT) ) {s = 8;}
 
                          
-                        input.seek(index81_3);
+                        input.seek(index82_3);
                         if ( s>=0 ) return s;
                         break;
-                    case 10 : 
-                        int LA81_4 = input.LA(1);
+                    case 11 : 
+                        int LA82_5 = input.LA(1);
 
                          
-                        int index81_4 = input.index();
+                        int index82_5 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 5;}
+                        if ( ((validateRestr())) ) {s = 4;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index81_4);
+                        input.seek(index82_5);
                         if ( s>=0 ) return s;
                         break;
+                    case 12 : 
+                        int LA82_2 = input.LA(1);
+
+                         
+                        int index82_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA82_2==ID) ) {s = 3;}
+
+                        else if ( ((LA82_2>=EQUAL && LA82_2<=GRAVE_ACCENT)) && ((validateRestr()))) {s = 4;}
+
+                        else if ( (LA82_2==LEFT_PAREN) ) {s = 5;}
+
+                         
+                        input.seek(index82_2);
+                        if ( s>=0 ) return s;
+                        break;
             }
             if (backtracking>0) {failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 81, _s, input);
+                new NoViableAltException(getDescription(), 82, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA82_eotS =
-        "\74\uffff";
-    static final String DFA82_eofS =
-        "\74\uffff";
-    static final String DFA82_minS =
-        "\1\131\1\uffff\3\123\1\uffff\1\123\1\4\2\123\7\0\4\4\47\0";
-    static final String DFA82_maxS =
-        "\1\142\1\uffff\1\157\1\162\1\157\1\uffff\1\162\1\u0080\1\123\1\162"+
-        "\7\0\4\u0080\47\0";
-    static final String DFA82_acceptS =
-        "\1\uffff\1\2\3\uffff\1\1\66\uffff";
-    static final String DFA82_specialS =
-        "\2\uffff\1\6\1\11\1\4\1\uffff\1\2\2\uffff\1\12\1\5\1\0\1\13\1\1"+
-        "\1\10\1\7\1\3\53\uffff}>";
-    static final String[] DFA82_transitionS = {
+    static final String DFA83_eotS =
+        "\75\uffff";
+    static final String DFA83_eofS =
+        "\75\uffff";
+    static final String DFA83_minS =
+        "\1\131\1\uffff\3\123\1\uffff\2\123\1\4\1\123\7\0\1\4\1\162\3\4"+
+        "\47\0";
+    static final String DFA83_maxS =
+        "\1\142\1\uffff\1\157\1\162\1\157\1\uffff\1\162\1\123\1\u0080\1"+
+        "\162\7\0\1\u0080\1\162\3\u0080\47\0";
+    static final String DFA83_acceptS =
+        "\1\uffff\1\2\3\uffff\1\1\67\uffff";
+    static final String DFA83_specialS =
+        "\2\uffff\1\5\1\11\1\1\1\uffff\1\0\2\uffff\1\12\1\3\1\13\1\4\1\2"+
+        "\1\6\1\7\1\10\54\uffff}>";
+    static final String[] DFA83_transitionS = {
             "\2\1\6\uffff\1\1\1\2",
             "",
             "\1\3\4\uffff\1\4\20\uffff\7\5",
-            "\1\6\1\1\2\uffff\1\5\1\7\3\uffff\1\1\2\uffff\2\5\10\uffff\6"+
-            "\1\1\10\2\5\1\1",
+            "\1\6\1\1\2\uffff\1\5\1\10\3\uffff\1\1\2\uffff\2\5\10\uffff"+
+            "\6\1\1\7\2\5\1\1",
             "\1\11\4\uffff\1\12\20\uffff\7\5",
             "",
             "\1\13\1\5\2\uffff\1\14\1\21\2\5\4\uffff\1\17\1\15\2\5\14\uffff"+
             "\1\1\1\16\1\20\1\5",
-            "\117\40\1\22\3\40\1\23\1\30\1\40\1\41\4\40\1\26\1\24\10\40\1"+
-            "\31\1\32\1\33\1\34\1\35\1\36\1\37\1\25\1\27\17\40",
-            "\1\42",
-            "\1\43\1\1\2\uffff\1\5\1\44\3\uffff\1\1\2\uffff\2\5\10\uffff"+
+            "\1\22",
+            "\117\42\1\23\3\42\1\24\1\31\1\42\1\33\4\42\1\27\1\25\10\42"+
+            "\1\32\1\34\1\35\1\36\1\37\1\40\1\41\1\26\1\30\17\42",
+            "\1\44\1\1\2\uffff\1\5\1\43\3\uffff\1\1\2\uffff\2\5\10\uffff"+
             "\6\1\1\45\2\5\1\1",
             "\1\uffff",
             "\1\uffff",
@@ -18842,12 +18950,13 @@
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
-            "\117\55\1\46\3\55\1\47\1\54\1\55\1\56\4\55\1\52\1\50\17\55\1"+
-            "\51\1\53\17\55",
-            "\117\40\1\60\1\70\2\40\1\62\1\61\1\71\1\57\4\40\1\65\1\63\16"+
-            "\40\1\72\1\64\1\66\1\67\16\40",
-            "\124\40\1\73\1\71\1\57\46\40",
-            "\124\40\1\73\1\71\1\57\46\40",
+            "\117\55\1\46\3\55\1\47\1\54\1\55\1\56\4\55\1\52\1\50\17\55"+
+            "\1\51\1\53\17\55",
+            "\1\57",
+            "\117\42\1\61\1\72\2\42\1\62\1\60\1\73\1\67\4\42\1\65\1\63"+
+            "\16\42\1\70\1\64\1\66\1\71\16\42",
+            "\124\42\1\74\1\73\1\67\46\42",
+            "\124\42\1\74\1\73\1\67\46\42",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -18889,34 +18998,34 @@
             "\1\uffff"
     };
 
-    static final short[] DFA82_eot = DFA.unpackEncodedString(DFA82_eotS);
-    static final short[] DFA82_eof = DFA.unpackEncodedString(DFA82_eofS);
-    static final char[] DFA82_min = DFA.unpackEncodedStringToUnsignedChars(DFA82_minS);
-    static final char[] DFA82_max = DFA.unpackEncodedStringToUnsignedChars(DFA82_maxS);
-    static final short[] DFA82_accept = DFA.unpackEncodedString(DFA82_acceptS);
-    static final short[] DFA82_special = DFA.unpackEncodedString(DFA82_specialS);
-    static final short[][] DFA82_transition;
+    static final short[] DFA83_eot = DFA.unpackEncodedString(DFA83_eotS);
+    static final short[] DFA83_eof = DFA.unpackEncodedString(DFA83_eofS);
+    static final char[] DFA83_min = DFA.unpackEncodedStringToUnsignedChars(DFA83_minS);
+    static final char[] DFA83_max = DFA.unpackEncodedStringToUnsignedChars(DFA83_maxS);
+    static final short[] DFA83_accept = DFA.unpackEncodedString(DFA83_acceptS);
+    static final short[] DFA83_special = DFA.unpackEncodedString(DFA83_specialS);
+    static final short[][] DFA83_transition;
 
     static {
-        int numStates = DFA82_transitionS.length;
-        DFA82_transition = new short[numStates][];
+        int numStates = DFA83_transitionS.length;
+        DFA83_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA82_transition[i] = DFA.unpackEncodedString(DFA82_transitionS[i]);
+            DFA83_transition[i] = DFA.unpackEncodedString(DFA83_transitionS[i]);
         }
     }
 
-    class DFA82 extends DFA {
+    class DFA83 extends DFA {
 
-        public DFA82(BaseRecognizer recognizer) {
+        public DFA83(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 82;
-            this.eot = DFA82_eot;
-            this.eof = DFA82_eof;
-            this.min = DFA82_min;
-            this.max = DFA82_max;
-            this.accept = DFA82_accept;
-            this.special = DFA82_special;
-            this.transition = DFA82_transition;
+            this.decisionNumber = 83;
+            this.eot = DFA83_eot;
+            this.eof = DFA83_eof;
+            this.min = DFA83_min;
+            this.max = DFA83_max;
+            this.accept = DFA83_accept;
+            this.special = DFA83_special;
+            this.transition = DFA83_transition;
         }
         public String getDescription() {
             return "()* loopback of 1178:26: ({...}? => DOUBLE_AMPER constraint_expression )*";
@@ -18925,69 +19034,71 @@
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA82_11 = input.LA(1);
+                        int LA83_6 = input.LA(1);
 
                          
-                        int index82_11 = input.index();
+                        int index83_6 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 5;}
+                        if ( (LA83_6==ID) ) {s = 11;}
 
-                        else if ( (true) ) {s = 1;}
+                        else if ( (LA83_6==STRING) ) {s = 12;}
 
+                        else if ( (LA83_6==INT) ) {s = 13;}
+
+                        else if ( (LA83_6==FLOAT) ) {s = 14;}
+
+                        else if ( (LA83_6==BOOL) ) {s = 15;}
+
+                        else if ( (LA83_6==NULL) ) {s = 16;}
+
+                        else if ( (LA83_6==LEFT_PAREN) ) {s = 17;}
+
+                        else if ( (LA83_6==GRAVE_ACCENT) ) {s = 1;}
+
+                        else if ( (LA83_6==DOT||(LA83_6>=COMMA && LA83_6<=RIGHT_PAREN)||(LA83_6>=DOUBLE_PIPE && LA83_6<=DOUBLE_AMPER)||LA83_6==LEFT_SQUARE) && ((validateRestr()))) {s = 5;}
+
                          
-                        input.seek(index82_11);
+                        input.seek(index83_6);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA82_13 = input.LA(1);
+                        int LA83_4 = input.LA(1);
 
                          
-                        int index82_13 = input.index();
+                        int index83_4 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 5;}
+                        if ( (LA83_4==ID) ) {s = 9;}
 
-                        else if ( (true) ) {s = 1;}
+                        else if ( ((LA83_4>=EQUAL && LA83_4<=GRAVE_ACCENT)) && ((validateRestr()))) {s = 5;}
 
+                        else if ( (LA83_4==LEFT_PAREN) ) {s = 10;}
+
                          
-                        input.seek(index82_13);
+                        input.seek(index83_4);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA82_6 = input.LA(1);
+                        int LA83_13 = input.LA(1);
 
                          
-                        int index82_6 = input.index();
+                        int index83_13 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA82_6==ID) ) {s = 11;}
+                        if ( ((validateRestr())) ) {s = 5;}
 
-                        else if ( (LA82_6==STRING) ) {s = 12;}
+                        else if ( (true) ) {s = 1;}
 
-                        else if ( (LA82_6==INT) ) {s = 13;}
-
-                        else if ( (LA82_6==FLOAT) ) {s = 14;}
-
-                        else if ( (LA82_6==BOOL) ) {s = 15;}
-
-                        else if ( (LA82_6==NULL) ) {s = 16;}
-
-                        else if ( (LA82_6==LEFT_PAREN) ) {s = 17;}
-
-                        else if ( (LA82_6==GRAVE_ACCENT) ) {s = 1;}
-
-                        else if ( (LA82_6==DOT||(LA82_6>=COMMA && LA82_6<=RIGHT_PAREN)||(LA82_6>=DOUBLE_PIPE && LA82_6<=DOUBLE_AMPER)||LA82_6==LEFT_SQUARE) && ((validateRestr()))) {s = 5;}
-
                          
-                        input.seek(index82_6);
+                        input.seek(index83_13);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA82_16 = input.LA(1);
+                        int LA83_10 = input.LA(1);
 
                          
-                        int index82_16 = input.index();
+                        int index83_10 = input.index();
                         input.rewind();
                         s = -1;
                         if ( ((validateRestr())) ) {s = 5;}
@@ -18995,63 +19106,61 @@
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index82_16);
+                        input.seek(index83_10);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA82_4 = input.LA(1);
+                        int LA83_12 = input.LA(1);
 
                          
-                        int index82_4 = input.index();
+                        int index83_12 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA82_4==ID) ) {s = 9;}
+                        if ( ((validateRestr())) ) {s = 5;}
 
-                        else if ( (LA82_4==LEFT_PAREN) ) {s = 10;}
+                        else if ( (true) ) {s = 1;}
 
-                        else if ( ((LA82_4>=EQUAL && LA82_4<=GRAVE_ACCENT)) && ((validateRestr()))) {s = 5;}
-
                          
-                        input.seek(index82_4);
+                        input.seek(index83_12);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA82_10 = input.LA(1);
+                        int LA83_2 = input.LA(1);
 
                          
-                        int index82_10 = input.index();
+                        int index83_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateRestr())) ) {s = 5;}
+                        if ( (LA83_2==ID) ) {s = 3;}
 
-                        else if ( (true) ) {s = 1;}
+                        else if ( (LA83_2==LEFT_PAREN) ) {s = 4;}
 
+                        else if ( ((LA83_2>=EQUAL && LA83_2<=GRAVE_ACCENT)) && ((validateRestr()))) {s = 5;}
+
                          
-                        input.seek(index82_10);
+                        input.seek(index83_2);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA82_2 = input.LA(1);
+                        int LA83_14 = input.LA(1);
 
                          
-                        int index82_2 = input.index();
+                        int index83_14 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA82_2==ID) ) {s = 3;}
+                        if ( ((validateRestr())) ) {s = 5;}
 
-                        else if ( (LA82_2==LEFT_PAREN) ) {s = 4;}
+                        else if ( (true) ) {s = 1;}
 
-                        else if ( ((LA82_2>=EQUAL && LA82_2<=GRAVE_ACCENT)) && ((validateRestr()))) {s = 5;}
-
                          
-                        input.seek(index82_2);
+                        input.seek(index83_14);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA82_15 = input.LA(1);
+                        int LA83_15 = input.LA(1);
 
                          
-                        int index82_15 = input.index();
+                        int index83_15 = input.index();
                         input.rewind();
                         s = -1;
                         if ( ((validateRestr())) ) {s = 5;}
@@ -19059,14 +19168,14 @@
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index82_15);
+                        input.seek(index83_15);
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA82_14 = input.LA(1);
+                        int LA83_16 = input.LA(1);
 
                          
-                        int index82_14 = input.index();
+                        int index83_16 = input.index();
                         input.rewind();
                         s = -1;
                         if ( ((validateRestr())) ) {s = 5;}
@@ -19074,56 +19183,56 @@
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index82_14);
+                        input.seek(index83_16);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
-                        int LA82_3 = input.LA(1);
+                        int LA83_3 = input.LA(1);
 
                          
-                        int index82_3 = input.index();
+                        int index83_3 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA82_3==DOT||LA82_3==COLON||(LA82_3>=EQUAL && LA82_3<=NOT_EQUAL)||LA82_3==LEFT_SQUARE) ) {s = 1;}
+                        if ( (LA83_3==DOT||LA83_3==COLON||(LA83_3>=EQUAL && LA83_3<=NOT_EQUAL)||LA83_3==LEFT_SQUARE) ) {s = 1;}
 
-                        else if ( (LA82_3==ID) ) {s = 6;}
+                        else if ( (LA83_3==ID) ) {s = 6;}
 
-                        else if ( (LA82_3==STRING||(LA82_3>=BOOL && LA82_3<=INT)||(LA82_3>=FLOAT && LA82_3<=NULL)) && ((validateRestr()))) {s = 5;}
+                        else if ( (LA83_3==GRAVE_ACCENT) ) {s = 7;}
 
-                        else if ( (LA82_3==LEFT_PAREN) ) {s = 7;}
+                        else if ( (LA83_3==LEFT_PAREN) ) {s = 8;}
 
-                        else if ( (LA82_3==GRAVE_ACCENT) ) {s = 8;}
+                        else if ( (LA83_3==STRING||(LA83_3>=BOOL && LA83_3<=INT)||(LA83_3>=FLOAT && LA83_3<=NULL)) && ((validateRestr()))) {s = 5;}
 
                          
-                        input.seek(index82_3);
+                        input.seek(index83_3);
                         if ( s>=0 ) return s;
                         break;
                     case 10 : 
-                        int LA82_9 = input.LA(1);
+                        int LA83_9 = input.LA(1);
 
                          
-                        int index82_9 = input.index();
+                        int index83_9 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA82_9==DOT||LA82_9==COLON||(LA82_9>=EQUAL && LA82_9<=NOT_EQUAL)||LA82_9==LEFT_SQUARE) ) {s = 1;}
+                        if ( (LA83_9==DOT||LA83_9==COLON||(LA83_9>=EQUAL && LA83_9<=NOT_EQUAL)||LA83_9==LEFT_SQUARE) ) {s = 1;}
 
-                        else if ( (LA82_9==ID) ) {s = 35;}
+                        else if ( (LA83_9==LEFT_PAREN) ) {s = 35;}
 
-                        else if ( (LA82_9==STRING||(LA82_9>=BOOL && LA82_9<=INT)||(LA82_9>=FLOAT && LA82_9<=NULL)) && ((validateRestr()))) {s = 5;}
+                        else if ( (LA83_9==ID) ) {s = 36;}
 
-                        else if ( (LA82_9==LEFT_PAREN) ) {s = 36;}
+                        else if ( (LA83_9==GRAVE_ACCENT) ) {s = 37;}
 
-                        else if ( (LA82_9==GRAVE_ACCENT) ) {s = 37;}
+                        else if ( (LA83_9==STRING||(LA83_9>=BOOL && LA83_9<=INT)||(LA83_9>=FLOAT && LA83_9<=NULL)) && ((validateRestr()))) {s = 5;}
 
                          
-                        input.seek(index82_9);
+                        input.seek(index83_9);
                         if ( s>=0 ) return s;
                         break;
                     case 11 : 
-                        int LA82_12 = input.LA(1);
+                        int LA83_11 = input.LA(1);
 
                          
-                        int index82_12 = input.index();
+                        int index83_11 = input.index();
                         input.rewind();
                         s = -1;
                         if ( ((validateRestr())) ) {s = 5;}
@@ -19131,13 +19240,13 @@
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index82_12);
+                        input.seek(index83_11);
                         if ( s>=0 ) return s;
                         break;
             }
             if (backtracking>0) {failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 82, _s, input);
+                new NoViableAltException(getDescription(), 83, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -19230,360 +19339,361 @@
     public static final BitSet FOLLOW_SEMICOLON_in_template_slot1418 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_ID_in_slot_id1447 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_rule_key_in_rule1484 = new BitSet(new long[]{0x0000000000000000L,0x0000000000880000L});
-    public static final BitSet FOLLOW_rule_id_in_rule1486 = new BitSet(new long[]{0x0000000000000000L,0x0010000040080000L});
-    public static final BitSet FOLLOW_rule_attributes_in_rule1494 = new BitSet(new long[]{0x0000000000000000L,0x0010000040000000L});
-    public static final BitSet FOLLOW_when_part_in_rule1497 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
-    public static final BitSet FOLLOW_rhs_chunk_in_rule1500 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_WHEN_in_when_part1530 = new BitSet(new long[]{0x0000000000000002L,0x0000000011080000L});
-    public static final BitSet FOLLOW_COLON_in_when_part1536 = new BitSet(new long[]{0x0000000000000002L,0x0000000001080000L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_when_part1546 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_rule_id1567 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_rule_id1583 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_attributes_key_in_rule_attributes1604 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
-    public static final BitSet FOLLOW_COLON_in_rule_attributes1606 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1616 = new BitSet(new long[]{0x0000000000000002L,0x0000000002080000L});
-    public static final BitSet FOLLOW_COMMA_in_rule_attributes1620 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1627 = new BitSet(new long[]{0x0000000000000002L,0x0000000002080000L});
-    public static final BitSet FOLLOW_salience_in_rule_attribute1666 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_no_loop_in_rule_attribute1672 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_agenda_group_in_rule_attribute1677 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_duration_in_rule_attribute1684 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_activation_group_in_rule_attribute1691 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_auto_focus_in_rule_attribute1697 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_effective_in_rule_attribute1703 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_expires_in_rule_attribute1709 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enabled_in_rule_attribute1715 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ruleflow_group_in_rule_attribute1721 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lock_on_active_in_rule_attribute1727 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_dialect_in_rule_attribute1732 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_effective_key_in_date_effective1748 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_STRING_in_date_effective1753 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_expires_key_in_date_expires1767 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_STRING_in_date_expires1772 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enabled_key_in_enabled1787 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
-    public static final BitSet FOLLOW_BOOL_in_enabled1792 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_salience_key_in_salience1807 = new BitSet(new long[]{0x0000000000000000L,0x0000000101000000L});
-    public static final BitSet FOLLOW_INT_in_salience1816 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_salience1825 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_no_loop_key_in_no_loop1840 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
-    public static final BitSet FOLLOW_BOOL_in_no_loop1845 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_auto_focus_key_in_auto_focus1860 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
-    public static final BitSet FOLLOW_BOOL_in_auto_focus1865 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_activation_group_key_in_activation_group1882 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_STRING_in_activation_group1887 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ruleflow_group_key_in_ruleflow_group1901 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_STRING_in_ruleflow_group1906 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_agenda_group_key_in_agenda_group1920 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_STRING_in_agenda_group1925 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_duration_key_in_duration1939 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
-    public static final BitSet FOLLOW_INT_in_duration1944 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_dialect_key_in_dialect1960 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_STRING_in_dialect1965 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lock_on_active_key_in_lock_on_active1983 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
-    public static final BitSet FOLLOW_BOOL_in_lock_on_active1988 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_in_normal_lhs_block2003 = new BitSet(new long[]{0x0000000000000002L,0x0000000001080000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs2024 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2048 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_or_key_in_lhs_or2058 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2066 = new BitSet(new long[]{0x0000000000000000L,0x0000000005080000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2072 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2095 = new BitSet(new long[]{0x0000000000000002L,0x0000000200080000L});
-    public static final BitSet FOLLOW_or_key_in_lhs_or2117 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_lhs_or2124 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2135 = new BitSet(new long[]{0x0000000000000002L,0x0000000200080000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_and2176 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_and_key_in_lhs_and2186 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2194 = new BitSet(new long[]{0x0000000000000000L,0x0000000005080000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_and2200 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2224 = new BitSet(new long[]{0x0000000000000002L,0x0000000400080000L});
-    public static final BitSet FOLLOW_and_key_in_lhs_and2246 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_lhs_and2253 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2264 = new BitSet(new long[]{0x0000000000000002L,0x0000000400080000L});
-    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary2295 = new BitSet(new long[]{0x0000000000000002L,0x0000000000040000L});
-    public static final BitSet FOLLOW_lhs_not_binding_in_lhs_unary2303 = new BitSet(new long[]{0x0000000000000002L,0x0000000000040000L});
-    public static final BitSet FOLLOW_lhs_not_in_lhs_unary2309 = new BitSet(new long[]{0x0000000000000002L,0x0000000000040000L});
-    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary2315 = new BitSet(new long[]{0x0000000000000002L,0x0000000000040000L});
-    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary2321 = new BitSet(new long[]{0x0000000000000002L,0x0000000000040000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary2327 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_unary2338 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary2344 = new BitSet(new long[]{0x0000000000000002L,0x0000000000040000L});
-    public static final BitSet FOLLOW_pattern_source_in_lhs_unary2352 = new BitSet(new long[]{0x0000000000000002L,0x0000000000040000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_lhs_unary2366 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_exists_key_in_lhs_exist2382 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2409 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist2416 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2424 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist2431 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_exist2446 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_not_key_in_lhs_not_binding2492 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_fact_binding_in_lhs_not_binding2494 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_not_key_in_lhs_not2517 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_not2539 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not2546 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_not2555 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not2561 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_not2571 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_eval_key_in_lhs_eval2610 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval2619 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forall_key_in_lhs_forall2646 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall2651 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_forall2659 = new BitSet(new long[]{0x0000000000000000L,0x0000000004080000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall2665 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_pattern_source2701 = new BitSet(new long[]{0x0000000000000002L,0x0000001800000000L});
-    public static final BitSet FOLLOW_over_clause_in_pattern_source2705 = new BitSet(new long[]{0x0000000000000002L,0x0000000800000000L});
-    public static final BitSet FOLLOW_FROM_in_pattern_source2715 = new BitSet(new long[]{0x0000000000000000L,0x000000A000080000L});
-    public static final BitSet FOLLOW_accumulate_statement_in_pattern_source2735 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_collect_statement_in_pattern_source2751 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_entrypoint_statement_in_pattern_source2768 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_from_source_in_pattern_source2784 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_OVER_in_over_clause2816 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_over_elements_in_over_clause2821 = new BitSet(new long[]{0x0000000000000002L,0x0000000002000000L});
-    public static final BitSet FOLLOW_COMMA_in_over_clause2828 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_over_elements_in_over_clause2833 = new BitSet(new long[]{0x0000000000000002L,0x0000000002000000L});
-    public static final BitSet FOLLOW_ID_in_over_elements2848 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
-    public static final BitSet FOLLOW_COLON_in_over_elements2855 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_ID_in_over_elements2864 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_over_elements2871 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ACCUMULATE_in_accumulate_statement2897 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement2906 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
-    public static final BitSet FOLLOW_lhs_or_in_accumulate_statement2914 = new BitSet(new long[]{0x0000000000000000L,0x0000004002080000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_statement2919 = new BitSet(new long[]{0x0000000000000000L,0x0000004000080000L});
-    public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_statement2929 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_statement2935 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement2943 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INIT_in_accumulate_init_clause2989 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3000 = new BitSet(new long[]{0x0000000000000000L,0x0000000002080000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3005 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_action_key_in_accumulate_init_clause3016 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3020 = new BitSet(new long[]{0x0000000000000000L,0x0000000002080000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3025 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_reverse_key_in_accumulate_init_clause3038 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3042 = new BitSet(new long[]{0x0000000000000000L,0x0000000002080000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3047 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_result_key_in_accumulate_init_clause3062 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3068 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3126 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3150 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
-    public static final BitSet FOLLOW_set_in_accumulate_paren_chunk_data3162 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3178 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3189 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_accumulate_id_clause3205 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_id_clause3211 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_COLLECT_in_collect_statement3233 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement3242 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_pattern_source_in_collect_statement3249 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement3254 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_entry_point_key_in_entrypoint_statement3281 = new BitSet(new long[]{0x0000000000000000L,0x0000000000880000L});
-    public static final BitSet FOLLOW_entrypoint_id_in_entrypoint_statement3289 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_entrypoint_id3315 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_entrypoint_id3332 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_from_source3352 = new BitSet(new long[]{0x0000000000000002L,0x0000000001100000L});
-    public static final BitSet FOLLOW_paren_chunk_in_from_source3367 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
-    public static final BitSet FOLLOW_expression_chain_in_from_source3374 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOT_in_expression_chain3407 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_ID_in_expression_chain3414 = new BitSet(new long[]{0x0000000000000002L,0x0004000001100000L});
-    public static final BitSet FOLLOW_paren_chunk_in_expression_chain3430 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
-    public static final BitSet FOLLOW_square_chunk_in_expression_chain3444 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
-    public static final BitSet FOLLOW_expression_chain_in_expression_chain3455 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_binding_in_lhs_pattern3488 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_lhs_pattern3501 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_label_in_fact_binding3521 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
-    public static final BitSet FOLLOW_fact_in_fact_binding3527 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_binding3534 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_fact_binding_expression_in_fact_binding3542 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_binding3550 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_fact_binding_expression3591 = new BitSet(new long[]{0x0000000000000002L,0x0000000200080000L});
-    public static final BitSet FOLLOW_or_key_in_fact_binding_expression3603 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_binding_expression3609 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_fact_in_fact_binding_expression3614 = new BitSet(new long[]{0x0000000000000002L,0x0000000200080000L});
-    public static final BitSet FOLLOW_pattern_type_in_fact3654 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact3659 = new BitSet(new long[]{0x0000000000000000L,0x0000000005080000L});
-    public static final BitSet FOLLOW_constraints_in_fact3670 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact3676 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_constraint_in_constraints3710 = new BitSet(new long[]{0x0000000000000002L,0x0000000002000000L});
-    public static final BitSet FOLLOW_COMMA_in_constraints3714 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
-    public static final BitSet FOLLOW_constraint_in_constraints3721 = new BitSet(new long[]{0x0000000000000002L,0x0000000002000000L});
-    public static final BitSet FOLLOW_or_constr_in_constraint3735 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_constr_in_or_constr3746 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_constr3750 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
-    public static final BitSet FOLLOW_and_constr_in_or_constr3757 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_unary_constr_in_and_constr3772 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_constr3776 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
-    public static final BitSet FOLLOW_unary_constr_in_and_constr3783 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_eval_key_in_unary_constr3816 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_unary_constr3819 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_field_constraint_in_unary_constr3824 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_unary_constr3830 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
-    public static final BitSet FOLLOW_or_constr_in_unary_constr3840 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_unary_constr3845 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_label_in_field_constraint3865 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_accessor_path_in_field_constraint3867 = new BitSet(new long[]{0x0000000000000002L,0x0000FF0001080000L});
-    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3874 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ARROW_in_field_constraint3880 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_field_constraint3884 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_path_in_field_constraint3938 = new BitSet(new long[]{0x0000000000000000L,0x0000FE0001080000L});
-    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3940 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_label3965 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
-    public static final BitSet FOLLOW_COLON_in_label3972 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective3993 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_restr_connective3999 = new BitSet(new long[]{0x0000000000000000L,0x0000FE0001080000L});
-    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective4007 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective4022 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_restr_connective4028 = new BitSet(new long[]{0x0000000000000000L,0x0000FE0001080000L});
-    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective4035 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_compound_operator_in_constraint_expression4057 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_simple_operator_in_constraint_expression4062 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_constraint_expression4067 = new BitSet(new long[]{0x0000000000000000L,0x0000FE0001080000L});
-    public static final BitSet FOLLOW_or_restr_connective_in_constraint_expression4076 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_constraint_expression4081 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EQUAL_in_simple_operator4110 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
-    public static final BitSet FOLLOW_GREATER_in_simple_operator4118 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
-    public static final BitSet FOLLOW_GREATER_EQUAL_in_simple_operator4126 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
-    public static final BitSet FOLLOW_LESS_in_simple_operator4134 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
-    public static final BitSet FOLLOW_LESS_EQUAL_in_simple_operator4142 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
-    public static final BitSet FOLLOW_NOT_EQUAL_in_simple_operator4150 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
-    public static final BitSet FOLLOW_not_key_in_simple_operator4158 = new BitSet(new long[]{0x0000000000000000L,0x0000800000080000L});
-    public static final BitSet FOLLOW_contains_key_in_simple_operator4165 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
-    public static final BitSet FOLLOW_soundslike_key_in_simple_operator4172 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
-    public static final BitSet FOLLOW_matches_key_in_simple_operator4179 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
-    public static final BitSet FOLLOW_memberof_key_in_simple_operator4186 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
-    public static final BitSet FOLLOW_ID_in_simple_operator4195 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
-    public static final BitSet FOLLOW_GRAVE_ACCENT_in_simple_operator4206 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_ID_in_simple_operator4214 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
-    public static final BitSet FOLLOW_square_chunk_in_simple_operator4220 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
-    public static final BitSet FOLLOW_contains_key_in_simple_operator4226 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
-    public static final BitSet FOLLOW_excludes_key_in_simple_operator4232 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
-    public static final BitSet FOLLOW_matches_key_in_simple_operator4238 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
-    public static final BitSet FOLLOW_soundslike_key_in_simple_operator4244 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
-    public static final BitSet FOLLOW_memberof_key_in_simple_operator4250 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
-    public static final BitSet FOLLOW_ID_in_simple_operator4258 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
-    public static final BitSet FOLLOW_GRAVE_ACCENT_in_simple_operator4268 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_ID_in_simple_operator4276 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
-    public static final BitSet FOLLOW_square_chunk_in_simple_operator4282 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
-    public static final BitSet FOLLOW_expression_value_in_simple_operator4289 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_in_key_in_compound_operator4307 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_not_key_in_compound_operator4312 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_in_key_in_compound_operator4314 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_compound_operator4325 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
-    public static final BitSet FOLLOW_expression_value_in_compound_operator4333 = new BitSet(new long[]{0x0000000000000000L,0x0000000006000000L});
-    public static final BitSet FOLLOW_COMMA_in_compound_operator4337 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
-    public static final BitSet FOLLOW_expression_value_in_compound_operator4342 = new BitSet(new long[]{0x0000000000000000L,0x0000000006000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_compound_operator4350 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_path_in_expression_value4371 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_constraint_in_expression_value4376 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_expression_value4382 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_literal_constraint4401 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INT_in_literal_constraint4408 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FLOAT_in_literal_constraint4415 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BOOL_in_literal_constraint4422 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_literal_constraint4429 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_pattern_type4444 = new BitSet(new long[]{0x0000000000000002L,0x0004000000100000L});
-    public static final BitSet FOLLOW_DOT_in_pattern_type4450 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_ID_in_pattern_type4454 = new BitSet(new long[]{0x0000000000000002L,0x0004000000100000L});
-    public static final BitSet FOLLOW_dimension_definition_in_pattern_type4469 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
-    public static final BitSet FOLLOW_ID_in_data_type4497 = new BitSet(new long[]{0x0000000000000002L,0x0004000000100000L});
-    public static final BitSet FOLLOW_DOT_in_data_type4503 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_ID_in_data_type4507 = new BitSet(new long[]{0x0000000000000002L,0x0004000000100000L});
-    public static final BitSet FOLLOW_dimension_definition_in_data_type4512 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition4541 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dimension_definition4548 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_element_in_accessor_path4562 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
-    public static final BitSet FOLLOW_DOT_in_accessor_path4566 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_accessor_element_in_accessor_path4570 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
-    public static final BitSet FOLLOW_ID_in_accessor_element4594 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
-    public static final BitSet FOLLOW_square_chunk_in_accessor_element4600 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
-    public static final BitSet FOLLOW_rhs_chunk_data_in_rhs_chunk4629 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_THEN_in_rhs_chunk_data4648 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
-    public static final BitSet FOLLOW_set_in_rhs_chunk_data4661 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
-    public static final BitSet FOLLOW_END_in_rhs_chunk_data4674 = new BitSet(new long[]{0x0000000000000002L,0x0000000000040000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_rhs_chunk_data4680 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk4699 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk_data4722 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
-    public static final BitSet FOLLOW_set_in_curly_chunk_data4734 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
-    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk_data4750 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk_data4761 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk4782 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk_data4806 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
-    public static final BitSet FOLLOW_set_in_paren_chunk_data4818 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
-    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk_data4834 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk_data4845 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk4866 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk_data4889 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
-    public static final BitSet FOLLOW_set_in_square_chunk_data4901 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
-    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk_data4916 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk_data4927 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key4951 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
-    public static final BitSet FOLLOW_MISC_in_lock_on_active_key4955 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key4959 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
-    public static final BitSet FOLLOW_MISC_in_lock_on_active_key4963 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key4967 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_date_effective_key4999 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
-    public static final BitSet FOLLOW_MISC_in_date_effective_key5003 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_ID_in_date_effective_key5007 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_date_expires_key5039 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
-    public static final BitSet FOLLOW_MISC_in_date_expires_key5043 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_ID_in_date_expires_key5047 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_no_loop_key5079 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
-    public static final BitSet FOLLOW_MISC_in_no_loop_key5083 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_ID_in_no_loop_key5087 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_auto_focus_key5119 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
-    public static final BitSet FOLLOW_MISC_in_auto_focus_key5123 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_ID_in_auto_focus_key5127 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_activation_group_key5159 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
-    public static final BitSet FOLLOW_MISC_in_activation_group_key5163 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_ID_in_activation_group_key5167 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_agenda_group_key5199 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
-    public static final BitSet FOLLOW_MISC_in_agenda_group_key5203 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_ID_in_agenda_group_key5207 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_ruleflow_group_key5239 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
-    public static final BitSet FOLLOW_MISC_in_ruleflow_group_key5243 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_ID_in_ruleflow_group_key5247 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_entry_point_key5279 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
-    public static final BitSet FOLLOW_MISC_in_entry_point_key5283 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_ID_in_entry_point_key5287 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_duration_key5316 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_package_key5343 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_import_key5370 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_dialect_key5397 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_salience_key5424 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_enabled_key5451 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_attributes_key5478 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_rule_key5505 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_template_key5532 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_query_key5559 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_declare_key5586 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_function_key5613 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_global_key5640 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_eval_key5667 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_contains_key5694 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_matches_key5721 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_excludes_key5748 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_soundslike_key5775 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_memberof_key5802 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_not_key5829 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_in_key5856 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_or_key5883 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_and_key5910 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_exists_key5937 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_forall_key5964 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_action_key5991 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_reverse_key6018 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_result_key6045 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred12039 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_or_key_in_synpred12041 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_or_key_in_synpred22108 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_synpred22110 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred32167 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_and_key_in_synpred32169 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred42237 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_synpred42239 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SEMICOLON_in_synpred52362 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred62399 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_or_key_in_synpred62402 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred62404 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred72527 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_or_key_in_synpred72530 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred72532 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred83361 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule_id_in_rule1486 = new BitSet(new long[]{0x0000000000000000L,0x0010000048080000L});
+    public static final BitSet FOLLOW_rule_attributes_in_rule1494 = new BitSet(new long[]{0x0000000000000000L,0x0010000048000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_rule1497 = new BitSet(new long[]{0x0000000000000000L,0x0010000048000000L});
+    public static final BitSet FOLLOW_when_part_in_rule1500 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_rhs_chunk_in_rule1503 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_WHEN_in_when_part1536 = new BitSet(new long[]{0x0000000000000002L,0x0000000011080000L});
+    public static final BitSet FOLLOW_COLON_in_when_part1542 = new BitSet(new long[]{0x0000000000000002L,0x0000000001080000L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_when_part1552 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_rule_id1573 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_rule_id1589 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_attributes_key_in_rule_attributes1610 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
+    public static final BitSet FOLLOW_COLON_in_rule_attributes1612 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1622 = new BitSet(new long[]{0x0000000000000002L,0x0000000002080000L});
+    public static final BitSet FOLLOW_COMMA_in_rule_attributes1626 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1633 = new BitSet(new long[]{0x0000000000000002L,0x0000000002080000L});
+    public static final BitSet FOLLOW_salience_in_rule_attribute1672 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_no_loop_in_rule_attribute1678 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_agenda_group_in_rule_attribute1683 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_duration_in_rule_attribute1690 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_activation_group_in_rule_attribute1697 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_auto_focus_in_rule_attribute1703 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_effective_in_rule_attribute1709 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_expires_in_rule_attribute1715 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enabled_in_rule_attribute1721 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleflow_group_in_rule_attribute1727 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lock_on_active_in_rule_attribute1733 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_dialect_in_rule_attribute1738 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_effective_key_in_date_effective1754 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_STRING_in_date_effective1759 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_expires_key_in_date_expires1773 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_STRING_in_date_expires1778 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enabled_key_in_enabled1793 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
+    public static final BitSet FOLLOW_BOOL_in_enabled1798 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_salience_key_in_salience1813 = new BitSet(new long[]{0x0000000000000000L,0x0000000101000000L});
+    public static final BitSet FOLLOW_INT_in_salience1822 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_salience1831 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_no_loop_key_in_no_loop1846 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
+    public static final BitSet FOLLOW_BOOL_in_no_loop1851 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_auto_focus_key_in_auto_focus1866 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
+    public static final BitSet FOLLOW_BOOL_in_auto_focus1871 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_activation_group_key_in_activation_group1888 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_STRING_in_activation_group1893 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleflow_group_key_in_ruleflow_group1907 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_STRING_in_ruleflow_group1912 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_agenda_group_key_in_agenda_group1926 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_STRING_in_agenda_group1931 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_duration_key_in_duration1945 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
+    public static final BitSet FOLLOW_INT_in_duration1950 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_dialect_key_in_dialect1966 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_STRING_in_dialect1971 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lock_on_active_key_in_lock_on_active1989 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
+    public static final BitSet FOLLOW_BOOL_in_lock_on_active1994 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_in_normal_lhs_block2009 = new BitSet(new long[]{0x0000000000000002L,0x0000000001080000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs2030 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2054 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_or_key_in_lhs_or2064 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2072 = new BitSet(new long[]{0x0000000000000000L,0x0000000005080000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2078 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2101 = new BitSet(new long[]{0x0000000000000002L,0x0000000200080000L});
+    public static final BitSet FOLLOW_or_key_in_lhs_or2123 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_lhs_or2130 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2141 = new BitSet(new long[]{0x0000000000000002L,0x0000000200080000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_and2182 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_and_key_in_lhs_and2192 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2200 = new BitSet(new long[]{0x0000000000000000L,0x0000000005080000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_and2206 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2230 = new BitSet(new long[]{0x0000000000000002L,0x0000000400080000L});
+    public static final BitSet FOLLOW_and_key_in_lhs_and2252 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_lhs_and2259 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2270 = new BitSet(new long[]{0x0000000000000002L,0x0000000400080000L});
+    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary2301 = new BitSet(new long[]{0x0000000000000002L,0x0000000000040000L});
+    public static final BitSet FOLLOW_lhs_not_binding_in_lhs_unary2309 = new BitSet(new long[]{0x0000000000000002L,0x0000000000040000L});
+    public static final BitSet FOLLOW_lhs_not_in_lhs_unary2315 = new BitSet(new long[]{0x0000000000000002L,0x0000000000040000L});
+    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary2321 = new BitSet(new long[]{0x0000000000000002L,0x0000000000040000L});
+    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary2327 = new BitSet(new long[]{0x0000000000000002L,0x0000000000040000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary2333 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_unary2344 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary2350 = new BitSet(new long[]{0x0000000000000002L,0x0000000000040000L});
+    public static final BitSet FOLLOW_pattern_source_in_lhs_unary2358 = new BitSet(new long[]{0x0000000000000002L,0x0000000000040000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_lhs_unary2372 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_exists_key_in_lhs_exist2388 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2415 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist2422 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2430 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist2437 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_exist2452 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_key_in_lhs_not_binding2498 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_fact_binding_in_lhs_not_binding2500 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_key_in_lhs_not2523 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_not2545 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not2552 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_not2561 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not2567 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_not2577 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_eval_key_in_lhs_eval2616 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval2625 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forall_key_in_lhs_forall2652 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall2657 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_forall2665 = new BitSet(new long[]{0x0000000000000000L,0x0000000004080000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall2671 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_pattern_source2707 = new BitSet(new long[]{0x0000000000000002L,0x0000001800000000L});
+    public static final BitSet FOLLOW_over_clause_in_pattern_source2711 = new BitSet(new long[]{0x0000000000000002L,0x0000000800000000L});
+    public static final BitSet FOLLOW_FROM_in_pattern_source2721 = new BitSet(new long[]{0x0000000000000000L,0x000000A000080000L});
+    public static final BitSet FOLLOW_accumulate_statement_in_pattern_source2741 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_collect_statement_in_pattern_source2757 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entrypoint_statement_in_pattern_source2774 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_from_source_in_pattern_source2790 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_OVER_in_over_clause2822 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_over_elements_in_over_clause2827 = new BitSet(new long[]{0x0000000000000002L,0x0000000002000000L});
+    public static final BitSet FOLLOW_COMMA_in_over_clause2834 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_over_elements_in_over_clause2839 = new BitSet(new long[]{0x0000000000000002L,0x0000000002000000L});
+    public static final BitSet FOLLOW_ID_in_over_elements2854 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
+    public static final BitSet FOLLOW_COLON_in_over_elements2861 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_ID_in_over_elements2870 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_over_elements2877 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACCUMULATE_in_accumulate_statement2903 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement2912 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
+    public static final BitSet FOLLOW_lhs_or_in_accumulate_statement2920 = new BitSet(new long[]{0x0000000000000000L,0x0000004002080000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_statement2925 = new BitSet(new long[]{0x0000000000000000L,0x0000004000080000L});
+    public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_statement2935 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_statement2941 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement2949 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INIT_in_accumulate_init_clause2995 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3006 = new BitSet(new long[]{0x0000000000000000L,0x0000000002080000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3011 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_action_key_in_accumulate_init_clause3022 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3026 = new BitSet(new long[]{0x0000000000000000L,0x0000000002080000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3031 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_reverse_key_in_accumulate_init_clause3044 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3048 = new BitSet(new long[]{0x0000000000000000L,0x0000000002080000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3053 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_result_key_in_accumulate_init_clause3068 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3074 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3132 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3156 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
+    public static final BitSet FOLLOW_set_in_accumulate_paren_chunk_data3168 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3184 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3195 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_accumulate_id_clause3211 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_id_clause3217 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COLLECT_in_collect_statement3239 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement3248 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_pattern_source_in_collect_statement3255 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement3260 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entry_point_key_in_entrypoint_statement3287 = new BitSet(new long[]{0x0000000000000000L,0x0000000000880000L});
+    public static final BitSet FOLLOW_entrypoint_id_in_entrypoint_statement3295 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_entrypoint_id3321 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_entrypoint_id3338 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_from_source3358 = new BitSet(new long[]{0x0000000000000002L,0x0000000001100000L});
+    public static final BitSet FOLLOW_paren_chunk_in_from_source3373 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_expression_chain_in_from_source3380 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOT_in_expression_chain3413 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_ID_in_expression_chain3420 = new BitSet(new long[]{0x0000000000000002L,0x0004000001100000L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_chain3436 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_square_chunk_in_expression_chain3450 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_expression_chain_in_expression_chain3461 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_binding_in_lhs_pattern3494 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_lhs_pattern3507 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_label_in_fact_binding3527 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
+    public static final BitSet FOLLOW_fact_in_fact_binding3533 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_binding3540 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_fact_binding_expression_in_fact_binding3548 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_binding3556 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_fact_binding_expression3597 = new BitSet(new long[]{0x0000000000000002L,0x0000000200080000L});
+    public static final BitSet FOLLOW_or_key_in_fact_binding_expression3609 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_binding_expression3615 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_fact_in_fact_binding_expression3620 = new BitSet(new long[]{0x0000000000000002L,0x0000000200080000L});
+    public static final BitSet FOLLOW_pattern_type_in_fact3660 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact3665 = new BitSet(new long[]{0x0000000000000000L,0x0000000005080000L});
+    public static final BitSet FOLLOW_constraints_in_fact3676 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact3682 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_constraint_in_constraints3716 = new BitSet(new long[]{0x0000000000000002L,0x0000000002000000L});
+    public static final BitSet FOLLOW_COMMA_in_constraints3720 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
+    public static final BitSet FOLLOW_constraint_in_constraints3727 = new BitSet(new long[]{0x0000000000000002L,0x0000000002000000L});
+    public static final BitSet FOLLOW_or_constr_in_constraint3741 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr3752 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_constr3756 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr3763 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr3778 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_constr3782 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr3789 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
+    public static final BitSet FOLLOW_eval_key_in_unary_constr3822 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_unary_constr3825 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_field_constraint_in_unary_constr3830 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_unary_constr3836 = new BitSet(new long[]{0x0000000000000000L,0x0000000001080000L});
+    public static final BitSet FOLLOW_or_constr_in_unary_constr3846 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_unary_constr3851 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_label_in_field_constraint3871 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_accessor_path_in_field_constraint3873 = new BitSet(new long[]{0x0000000000000002L,0x0000FF0001080000L});
+    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3880 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ARROW_in_field_constraint3886 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_field_constraint3890 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_path_in_field_constraint3944 = new BitSet(new long[]{0x0000000000000000L,0x0000FE0001080000L});
+    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3946 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_label3971 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
+    public static final BitSet FOLLOW_COLON_in_label3978 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective3999 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_restr_connective4005 = new BitSet(new long[]{0x0000000000000000L,0x0000FE0001080000L});
+    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective4013 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
+    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective4028 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_restr_connective4034 = new BitSet(new long[]{0x0000000000000000L,0x0000FE0001080000L});
+    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective4041 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
+    public static final BitSet FOLLOW_compound_operator_in_constraint_expression4063 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_simple_operator_in_constraint_expression4068 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_constraint_expression4073 = new BitSet(new long[]{0x0000000000000000L,0x0000FE0001080000L});
+    public static final BitSet FOLLOW_or_restr_connective_in_constraint_expression4082 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_constraint_expression4087 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EQUAL_in_simple_operator4116 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
+    public static final BitSet FOLLOW_GREATER_in_simple_operator4124 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
+    public static final BitSet FOLLOW_GREATER_EQUAL_in_simple_operator4132 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
+    public static final BitSet FOLLOW_LESS_in_simple_operator4140 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
+    public static final BitSet FOLLOW_LESS_EQUAL_in_simple_operator4148 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
+    public static final BitSet FOLLOW_NOT_EQUAL_in_simple_operator4156 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
+    public static final BitSet FOLLOW_not_key_in_simple_operator4164 = new BitSet(new long[]{0x0000000000000000L,0x0000800000080000L});
+    public static final BitSet FOLLOW_contains_key_in_simple_operator4171 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
+    public static final BitSet FOLLOW_soundslike_key_in_simple_operator4178 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
+    public static final BitSet FOLLOW_matches_key_in_simple_operator4185 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
+    public static final BitSet FOLLOW_memberof_key_in_simple_operator4192 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
+    public static final BitSet FOLLOW_ID_in_simple_operator4201 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
+    public static final BitSet FOLLOW_GRAVE_ACCENT_in_simple_operator4212 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_ID_in_simple_operator4220 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_square_chunk_in_simple_operator4226 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
+    public static final BitSet FOLLOW_contains_key_in_simple_operator4232 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
+    public static final BitSet FOLLOW_excludes_key_in_simple_operator4238 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
+    public static final BitSet FOLLOW_matches_key_in_simple_operator4244 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
+    public static final BitSet FOLLOW_soundslike_key_in_simple_operator4250 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
+    public static final BitSet FOLLOW_memberof_key_in_simple_operator4256 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
+    public static final BitSet FOLLOW_ID_in_simple_operator4264 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
+    public static final BitSet FOLLOW_GRAVE_ACCENT_in_simple_operator4274 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_ID_in_simple_operator4282 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_square_chunk_in_simple_operator4288 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
+    public static final BitSet FOLLOW_expression_value_in_simple_operator4295 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_in_key_in_compound_operator4313 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_not_key_in_compound_operator4318 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_in_key_in_compound_operator4320 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_compound_operator4331 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
+    public static final BitSet FOLLOW_expression_value_in_compound_operator4339 = new BitSet(new long[]{0x0000000000000000L,0x0000000006000000L});
+    public static final BitSet FOLLOW_COMMA_in_compound_operator4343 = new BitSet(new long[]{0x0000000000000000L,0x0003000181880000L});
+    public static final BitSet FOLLOW_expression_value_in_compound_operator4348 = new BitSet(new long[]{0x0000000000000000L,0x0000000006000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_compound_operator4356 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_path_in_expression_value4377 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_constraint_in_expression_value4382 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_value4388 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_literal_constraint4407 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_literal_constraint4414 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_literal_constraint4421 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_literal_constraint4428 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_literal_constraint4435 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_pattern_type4450 = new BitSet(new long[]{0x0000000000000002L,0x0004000000100000L});
+    public static final BitSet FOLLOW_DOT_in_pattern_type4456 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_ID_in_pattern_type4460 = new BitSet(new long[]{0x0000000000000002L,0x0004000000100000L});
+    public static final BitSet FOLLOW_dimension_definition_in_pattern_type4475 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
+    public static final BitSet FOLLOW_ID_in_data_type4503 = new BitSet(new long[]{0x0000000000000002L,0x0004000000100000L});
+    public static final BitSet FOLLOW_DOT_in_data_type4509 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_ID_in_data_type4513 = new BitSet(new long[]{0x0000000000000002L,0x0004000000100000L});
+    public static final BitSet FOLLOW_dimension_definition_in_data_type4518 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition4547 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dimension_definition4554 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_element_in_accessor_path4568 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_DOT_in_accessor_path4572 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_accessor_element_in_accessor_path4576 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_ID_in_accessor_element4600 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
+    public static final BitSet FOLLOW_square_chunk_in_accessor_element4606 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
+    public static final BitSet FOLLOW_rhs_chunk_data_in_rhs_chunk4635 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_THEN_in_rhs_chunk_data4654 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
+    public static final BitSet FOLLOW_set_in_rhs_chunk_data4667 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
+    public static final BitSet FOLLOW_END_in_rhs_chunk_data4680 = new BitSet(new long[]{0x0000000000000002L,0x0000000000040000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_rhs_chunk_data4686 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk4705 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk_data4728 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
+    public static final BitSet FOLLOW_set_in_curly_chunk_data4740 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
+    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk_data4756 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk_data4767 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk4788 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk_data4812 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
+    public static final BitSet FOLLOW_set_in_paren_chunk_data4824 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
+    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk_data4840 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk_data4851 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk4872 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk_data4895 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
+    public static final BitSet FOLLOW_set_in_square_chunk_data4907 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
+    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk_data4922 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000000001L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk_data4933 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key4957 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
+    public static final BitSet FOLLOW_MISC_in_lock_on_active_key4961 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key4965 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
+    public static final BitSet FOLLOW_MISC_in_lock_on_active_key4969 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key4973 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_date_effective_key5005 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
+    public static final BitSet FOLLOW_MISC_in_date_effective_key5009 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_ID_in_date_effective_key5013 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_date_expires_key5045 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
+    public static final BitSet FOLLOW_MISC_in_date_expires_key5049 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_ID_in_date_expires_key5053 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_no_loop_key5085 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
+    public static final BitSet FOLLOW_MISC_in_no_loop_key5089 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_ID_in_no_loop_key5093 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_auto_focus_key5125 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
+    public static final BitSet FOLLOW_MISC_in_auto_focus_key5129 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_ID_in_auto_focus_key5133 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_activation_group_key5165 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
+    public static final BitSet FOLLOW_MISC_in_activation_group_key5169 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_ID_in_activation_group_key5173 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_agenda_group_key5205 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
+    public static final BitSet FOLLOW_MISC_in_agenda_group_key5209 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_ID_in_agenda_group_key5213 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_ruleflow_group_key5245 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
+    public static final BitSet FOLLOW_MISC_in_ruleflow_group_key5249 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_ID_in_ruleflow_group_key5253 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_entry_point_key5285 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
+    public static final BitSet FOLLOW_MISC_in_entry_point_key5289 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_ID_in_entry_point_key5293 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_duration_key5322 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_package_key5349 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_import_key5376 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_dialect_key5403 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_salience_key5430 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_enabled_key5457 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_attributes_key5484 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_rule_key5511 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_template_key5538 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_query_key5565 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_declare_key5592 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_function_key5619 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_global_key5646 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_eval_key5673 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_contains_key5700 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_matches_key5727 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_excludes_key5754 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_soundslike_key5781 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_memberof_key5808 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_not_key5835 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_in_key5862 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_or_key5889 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_and_key5916 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_exists_key5943 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_forall_key5970 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_action_key5997 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_reverse_key6024 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_result_key6051 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred12045 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_or_key_in_synpred12047 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_or_key_in_synpred22114 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_synpred22116 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred32173 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_and_key_in_synpred32175 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred42243 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_synpred42245 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SEMICOLON_in_synpred52368 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred62405 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_or_key_in_synpred62408 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred62410 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred72533 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_or_key_in_synpred72536 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred72538 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred83367 = new BitSet(new long[]{0x0000000000000002L});
 
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java	2008-10-17 13:03:49 UTC (rev 23496)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java	2008-10-17 16:23:06 UTC (rev 23497)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g 2008-08-26 16:09:41
+// $ANTLR 3.0.1 src/main/resources/org/drools/lang/DescrBuilderTree.g 2008-10-16 18:53:59
 
 	package org.drools.lang;
 
@@ -38,132 +38,132 @@
     public static final String[] tokenNames = new String[] {
         "<invalid>", "<EOR>", "<DOWN>", "<UP>", "VT_COMPILATION_UNIT", "VT_FUNCTION_IMPORT", "VT_FACT", "VT_CONSTRAINTS", "VT_LABEL", "VT_QUERY_ID", "VT_TEMPLATE_ID", "VT_TYPE_DECLARE_ID", "VT_RULE_ID", "VT_ENTRYPOINT_ID", "VT_SLOT_ID", "VT_SLOT", "VT_RULE_ATTRIBUTES", "VT_RHS_CHUNK", "VT_CURLY_CHUNK", "VT_SQUARE_CHUNK", "VT_PAREN_CHUNK", "VT_BEHAVIOR", "VT_AND_IMPLICIT", "VT_AND_PREFIX", "VT_OR_PREFIX", "VT_AND_INFIX", "VT_OR_INFIX", "VT_ACCUMULATE_INIT_CLAUSE", "VT_ACCUMULATE_ID_CLAUSE", "VT_FROM_SOURCE", "VT_EXPRESSION_CHAIN", "VT_PATTERN", "VT_FACT_BINDING", "VT_FACT_OR", "VT_BIND_FIELD", "VT_FIELD", "VT_ACCESSOR_PATH", "VT_ACCESSOR_ELEMENT", "VT_DATA_TYPE", "VT_PATTERN_TYPE", "VT_PACKAGE_ID", "VT_IMPORT_ID", "VT_GLOBAL_ID", "VT_FUNCTION_ID", "VT_PARAM_LIST", "VK_DATE_EFFECTIVE", "VK_DATE_EXPIRES", "VK_LOCK_ON_ACTIVE", "VK_NO_LOOP", "VK_AUTO_FOCUS", "VK_ACTIVATION_GROUP", "VK_AGENDA_GROUP", "VK_RULEFLOW_GROUP", "VK_DURATION", "VK_DIALECT", "VK_SALIENCE", "VK_ENABLED", "!
 VK_ATTRIBUTES", "VK_RULE", "VK_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_ACTION", "VK_REVERSE", "VK_RESULT", "SEMICOLON", "ID", "DOT", "DOT_STAR", "END", "STRING", "LEFT_PAREN", "COMMA", "RIGHT_PAREN", "AT", "COLON", "EQUALS", "WHEN", "BOOL", "INT", "DOUBLE_PIPE", "DOUBLE_AMPER", "FROM", "OVER", "ACCUMULATE", "INIT", "COLLECT", "ARROW", "EQUAL", "GREATER", "GREATER_EQUAL", "LESS", "LESS_EQUAL", "NOT_EQUAL", "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=89;
-    public static final int VT_PATTERN_TYPE=39;
-    public static final int VT_ACCUMULATE_ID_CLAUSE=28;
-    public static final int VK_DIALECT=54;
+    public static final int VT_ACCESSOR_ELEMENT=37;
+    public static final int ACCUMULATE=101;
+    public static final int VT_DATA_TYPE=38;
+    public static final int DOT_STAR=85;
     public static final int VK_FUNCTION=64;
-    public static final int END=86;
-    public static final int HexDigit=123;
-    public static final int VK_ATTRIBUTES=57;
-    public static final int VT_EXPRESSION_CHAIN=30;
-    public static final int MISC=119;
-    public static final int VT_AND_PREFIX=23;
-    public static final int VK_QUERY=62;
-    public static final int THEN=116;
+    public static final int VK_GLOBAL=65;
+    public static final int VK_AND=76;
+    public static final int EQUALS=93;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=126;
     public static final int VK_AUTO_FOCUS=49;
-    public static final int DOT=84;
+    public static final int VK_SALIENCE=55;
+    public static final int EOF=-1;
+    public static final int VT_PATTERN_TYPE=39;
+    public static final int VT_FUNCTION_IMPORT=5;
+    public static final int VT_OR_INFIX=26;
+    public static final int DOUBLE_AMPER=98;
+    public static final int EOL=120;
+    public static final int GREATER=106;
     public static final int VK_IMPORT=59;
+    public static final int NOT_EQUAL=110;
+    public static final int VK_ACTION=79;
+    public static final int VK_RULE=58;
+    public static final int VK_MEMBEROF=71;
+    public static final int LESS=108;
+    public static final int GRAVE_ACCENT=111;
     public static final int VT_SLOT=15;
+    public static final int VK_OR=75;
+    public static final int VT_AND_PREFIX=23;
+    public static final int NULL=113;
+    public static final int BOOL=95;
+    public static final int VK_QUERY=62;
+    public static final int SEMICOLON=82;
+    public static final int INT=96;
+    public static final int VT_FUNCTION_ID=43;
+    public static final int VT_RHS_CHUNK=17;
+    public static final int VT_FACT_BINDING=32;
+    public static final int VK_ENTRY_POINT=72;
+    public static final int VK_RULEFLOW_GROUP=52;
+    public static final int VK_RESULT=81;
     public static final int VT_PACKAGE_ID=40;
-    public static final int LEFT_SQUARE=114;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=126;
-    public static final int VT_DATA_TYPE=38;
-    public static final int VK_MATCHES=68;
+    public static final int VT_LABEL=8;
+    public static final int WS=121;
+    public static final int VK_NO_LOOP=48;
+    public static final int LEFT_CURLY=117;
     public static final int VT_FACT=6;
-    public static final int LEFT_CURLY=117;
-    public static final int AT=91;
+    public static final int VT_PATTERN=31;
+    public static final int VK_IN=74;
     public static final int LEFT_PAREN=88;
-    public static final int DOUBLE_AMPER=98;
-    public static final int VT_QUERY_ID=9;
-    public static final int VT_ACCESSOR_PATH=36;
-    public static final int VT_LABEL=8;
-    public static final int WHEN=94;
-    public static final int VT_ENTRYPOINT_ID=13;
-    public static final int VK_SOUNDSLIKE=70;
-    public static final int VK_SALIENCE=55;
-    public static final int VT_FIELD=35;
-    public static final int WS=121;
-    public static final int OVER=100;
-    public static final int STRING=87;
-    public static final int VK_AND=76;
-    public static final int VT_ACCESSOR_ELEMENT=37;
-    public static final int VT_ACCUMULATE_INIT_CLAUSE=27;
-    public static final int VK_GLOBAL=65;
-    public static final int VK_REVERSE=80;
-    public static final int VT_BEHAVIOR=21;
-    public static final int GRAVE_ACCENT=111;
-    public static final int VK_DURATION=53;
-    public static final int VT_SQUARE_CHUNK=19;
-    public static final int VK_FORALL=78;
-    public static final int VT_PAREN_CHUNK=20;
-    public static final int VT_COMPILATION_UNIT=4;
+    public static final int LESS_EQUAL=109;
+    public static final int VT_IMPORT_ID=41;
+    public static final int VT_RULE_ID=12;
+    public static final int MISC=119;
+    public static final int FROM=99;
+    public static final int END=86;
     public static final int COLLECT=103;
+    public static final int INIT=102;
+    public static final int EscapeSequence=122;
+    public static final int VK_ACTIVATION_GROUP=50;
     public static final int VK_ENABLED=56;
-    public static final int EQUALS=93;
-    public static final int VK_RESULT=81;
-    public static final int UnicodeEscape=124;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=127;
     public static final int VK_PACKAGE=60;
-    public static final int VT_RULE_ID=12;
-    public static final int EQUAL=105;
-    public static final int VK_NO_LOOP=48;
-    public static final int SEMICOLON=82;
-    public static final int VK_TEMPLATE=61;
-    public static final int VT_AND_IMPLICIT=22;
-    public static final int NULL=113;
-    public static final int COLON=92;
-    public static final int MULTI_LINE_COMMENT=128;
-    public static final int VT_RULE_ATTRIBUTES=16;
+    public static final int OVER=100;
     public static final int RIGHT_SQUARE=115;
-    public static final int VK_AGENDA_GROUP=51;
+    public static final int RIGHT_CURLY=118;
+    public static final int VK_MATCHES=68;
     public static final int VT_FACT_OR=33;
-    public static final int VK_NOT=73;
+    public static final int VT_FIELD=35;
+    public static final int FLOAT=112;
+    public static final int VT_ACCUMULATE_ID_CLAUSE=28;
+    public static final int VK_EXISTS=77;
     public static final int VK_DATE_EXPIRES=46;
-    public static final int ARROW=104;
-    public static final int FLOAT=112;
-    public static final int INIT=102;
-    public static final int VT_SLOT_ID=14;
-    public static final int VT_CURLY_CHUNK=18;
+    public static final int ID=83;
+    public static final int HexDigit=123;
     public static final int VT_OR_PREFIX=24;
+    public static final int VK_EVAL=66;
     public static final int DOUBLE_PIPE=97;
-    public static final int LESS=108;
+    public static final int AT=91;
+    public static final int RIGHT_PAREN=90;
+    public static final int THEN=116;
+    public static final int VT_COMPILATION_UNIT=4;
+    public static final int VT_EXPRESSION_CHAIN=30;
+    public static final int COMMA=89;
+    public static final int EQUAL=105;
+    public static final int VT_BEHAVIOR=21;
+    public static final int VT_QUERY_ID=9;
+    public static final int VK_DIALECT=54;
+    public static final int DOT=84;
+    public static final int VT_GLOBAL_ID=42;
+    public static final int VK_NOT=73;
+    public static final int VT_FROM_SOURCE=29;
+    public static final int VK_DECLARE=63;
+    public static final int VT_ENTRYPOINT_ID=13;
+    public static final int VT_PAREN_CHUNK=20;
+    public static final int VK_CONTAINS=67;
     public static final int VT_TYPE_DECLARE_ID=11;
-    public static final int VT_PATTERN=31;
+    public static final int VK_REVERSE=80;
+    public static final int VK_LOCK_ON_ACTIVE=47;
+    public static final int VK_TEMPLATE=61;
+    public static final int VK_DURATION=53;
+    public static final int VT_RULE_ATTRIBUTES=16;
+    public static final int VT_AND_INFIX=25;
+    public static final int VT_ACCESSOR_PATH=36;
+    public static final int MULTI_LINE_COMMENT=128;
+    public static final int VK_FORALL=78;
+    public static final int COLON=92;
+    public static final int VK_EXCLUDES=69;
+    public static final int VK_SOUNDSLIKE=70;
+    public static final int VT_AND_IMPLICIT=22;
+    public static final int VT_ACCUMULATE_INIT_CLAUSE=27;
+    public static final int VT_CURLY_CHUNK=18;
+    public static final int VT_SLOT_ID=14;
+    public static final int VK_ATTRIBUTES=57;
+    public static final int WHEN=94;
+    public static final int UnicodeEscape=124;
+    public static final int VT_SQUARE_CHUNK=19;
     public static final int VK_DATE_EFFECTIVE=45;
-    public static final int EscapeSequence=122;
-    public static final int VK_EXISTS=77;
-    public static final int INT=96;
+    public static final int VT_TEMPLATE_ID=10;
+    public static final int VT_PARAM_LIST=44;
+    public static final int ARROW=104;
     public static final int VT_BIND_FIELD=34;
-    public static final int VK_RULE=58;
-    public static final int VK_EVAL=66;
-    public static final int GREATER=106;
-    public static final int VT_FACT_BINDING=32;
-    public static final int ID=83;
-    public static final int FROM=99;
-    public static final int NOT_EQUAL=110;
-    public static final int RIGHT_CURLY=118;
-    public static final int VK_ENTRY_POINT=72;
-    public static final int VT_PARAM_LIST=44;
-    public static final int VT_AND_INFIX=25;
-    public static final int BOOL=95;
-    public static final int VT_FROM_SOURCE=29;
-    public static final int VK_CONTAINS=67;
-    public static final int VK_LOCK_ON_ACTIVE=47;
-    public static final int VT_FUNCTION_IMPORT=5;
-    public static final int VK_IN=74;
-    public static final int VT_RHS_CHUNK=17;
-    public static final int VK_MEMBEROF=71;
+    public static final int VK_AGENDA_GROUP=51;
+    public static final int VT_CONSTRAINTS=7;
+    public static final int LEFT_SQUARE=114;
     public static final int GREATER_EQUAL=107;
-    public static final int VT_OR_INFIX=26;
-    public static final int DOT_STAR=85;
-    public static final int VK_OR=75;
-    public static final int VT_GLOBAL_ID=42;
-    public static final int LESS_EQUAL=109;
-    public static final int ACCUMULATE=101;
-    public static final int VK_RULEFLOW_GROUP=52;
-    public static final int VT_FUNCTION_ID=43;
-    public static final int EOF=-1;
-    public static final int VT_CONSTRAINTS=7;
-    public static final int VT_IMPORT_ID=41;
-    public static final int EOL=120;
-    public static final int VK_ACTIVATION_GROUP=50;
     public static final int OctalEscape=125;
-    public static final int VK_ACTION=79;
-    public static final int VK_EXCLUDES=69;
-    public static final int RIGHT_PAREN=90;
-    public static final int VT_TEMPLATE_ID=10;
-    public static final int VK_DECLARE=63;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=127;
+    public static final int STRING=87;
 
         public DescrBuilderTree(TreeNodeStream input) {
             super(input);
@@ -171,7 +171,7 @@
         
 
     public String[] getTokenNames() { return tokenNames; }
-    public String getGrammarFileName() { return "/Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g"; }
+    public String getGrammarFileName() { return "src/main/resources/org/drools/lang/DescrBuilderTree.g"; }
 
 
     	DescrFactory factory = new DescrFactory();
@@ -184,11 +184,11 @@
 
 
     // $ANTLR start compilation_unit
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:48:1: compilation_unit : ^( VT_COMPILATION_UNIT package_statement ( statement )* ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:48:1: compilation_unit : ^( VT_COMPILATION_UNIT package_statement ( statement )* ) ;
     public final void compilation_unit() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:49:2: ( ^( VT_COMPILATION_UNIT package_statement ( statement )* ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:49:4: ^( VT_COMPILATION_UNIT package_statement ( statement )* )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:49:2: ( ^( VT_COMPILATION_UNIT package_statement ( statement )* ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:49:4: ^( VT_COMPILATION_UNIT package_statement ( statement )* )
             {
             match(input,VT_COMPILATION_UNIT,FOLLOW_VT_COMPILATION_UNIT_in_compilation_unit49); 
 
@@ -198,7 +198,7 @@
                 package_statement();
                 _fsp--;
 
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:49:44: ( statement )*
+                // src/main/resources/org/drools/lang/DescrBuilderTree.g:49:44: ( statement )*
                 loop1:
                 do {
                     int alt1=2;
@@ -211,7 +211,7 @@
 
                     switch (alt1) {
                 	case 1 :
-                	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:49:44: statement
+                	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:49:44: statement
                 	    {
                 	    pushFollow(FOLLOW_statement_in_compilation_unit53);
                 	    statement();
@@ -245,7 +245,7 @@
 
 
     // $ANTLR start package_statement
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:52:1: package_statement returns [String packageName] : ( ^( VK_PACKAGE packageId= package_id ) | );
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:52:1: package_statement returns [String packageName] : ( ^( VK_PACKAGE packageId= package_id ) | );
     public final String package_statement() throws RecognitionException {
         String packageName = null;
 
@@ -253,7 +253,7 @@
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:53:2: ( ^( VK_PACKAGE packageId= package_id ) | )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:53:2: ( ^( VK_PACKAGE packageId= package_id ) | )
             int alt2=2;
             int LA2_0 = input.LA(1);
 
@@ -271,7 +271,7 @@
             }
             switch (alt2) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:53:4: ^( VK_PACKAGE packageId= package_id )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:53:4: ^( VK_PACKAGE packageId= package_id )
                     {
                     match(input,VK_PACKAGE,FOLLOW_VK_PACKAGE_in_package_statement71); 
 
@@ -288,7 +288,7 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:57:2: 
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:57:2: 
                     {
                     	this.packageDescr = factory.createPackage(null);	
                     		packageName = "";	
@@ -310,7 +310,7 @@
 
 
     // $ANTLR start package_id
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:61:1: package_id returns [List idList] : ^( VT_PACKAGE_ID (tempList+= ID )+ ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:61:1: package_id returns [List idList] : ^( VT_PACKAGE_ID (tempList+= ID )+ ) ;
     public final List package_id() throws RecognitionException {
         List idList = null;
 
@@ -318,13 +318,13 @@
         List list_tempList=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:62:2: ( ^( VT_PACKAGE_ID (tempList+= ID )+ ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:62:4: ^( VT_PACKAGE_ID (tempList+= ID )+ )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:62:2: ( ^( VT_PACKAGE_ID (tempList+= ID )+ ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:62:4: ^( VT_PACKAGE_ID (tempList+= ID )+ )
             {
             match(input,VT_PACKAGE_ID,FOLLOW_VT_PACKAGE_ID_in_package_id102); 
 
             match(input, Token.DOWN, null); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:62:28: (tempList+= ID )+
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:62:28: (tempList+= ID )+
             int cnt3=0;
             loop3:
             do {
@@ -338,7 +338,7 @@
 
                 switch (alt3) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:62:28: tempList+= ID
+            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:62:28: tempList+= ID
             	    {
             	    tempList=(DroolsTree)input.LT(1);
             	    match(input,ID,FOLLOW_ID_in_package_id106); 
@@ -377,7 +377,7 @@
 
 
     // $ANTLR start statement
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:66:1: statement : (a= rule_attribute | fi= function_import_statement | is= import_statement | gl= global | fn= function | tp= template | rl= rule | qr= query | td= type_declaration );
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:66:1: statement : (a= rule_attribute | fi= function_import_statement | is= import_statement | gl= global | fn= function | tp= template | rl= rule | qr= query | td= type_declaration );
     public final void statement() throws RecognitionException {
         AttributeDescr a = null;
 
@@ -399,7 +399,7 @@
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:67:2: (a= rule_attribute | fi= function_import_statement | is= import_statement | gl= global | fn= function | tp= template | rl= rule | qr= query | td= type_declaration )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:67:2: (a= rule_attribute | fi= function_import_statement | is= import_statement | gl= global | fn= function | tp= template | rl= rule | qr= query | td= type_declaration )
             int alt4=9;
             switch ( input.LA(1) ) {
             case VK_DATE_EFFECTIVE:
@@ -467,7 +467,7 @@
 
             switch (alt4) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:67:4: a= rule_attribute
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:67:4: a= rule_attribute
                     {
                     pushFollow(FOLLOW_rule_attribute_in_statement124);
                     a=rule_attribute();
@@ -478,7 +478,7 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:69:4: fi= function_import_statement
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:69:4: fi= function_import_statement
                     {
                     pushFollow(FOLLOW_function_import_statement_in_statement134);
                     fi=function_import_statement();
@@ -489,7 +489,7 @@
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:71:4: is= import_statement
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:71:4: is= import_statement
                     {
                     pushFollow(FOLLOW_import_statement_in_statement144);
                     is=import_statement();
@@ -500,7 +500,7 @@
                     }
                     break;
                 case 4 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:73:4: gl= global
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:73:4: gl= global
                     {
                     pushFollow(FOLLOW_global_in_statement155);
                     gl=global();
@@ -511,7 +511,7 @@
                     }
                     break;
                 case 5 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:75:4: fn= function
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:75:4: fn= function
                     {
                     pushFollow(FOLLOW_function_in_statement165);
                     fn=function();
@@ -522,7 +522,7 @@
                     }
                     break;
                 case 6 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:77:4: tp= template
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:77:4: tp= template
                     {
                     pushFollow(FOLLOW_template_in_statement175);
                     tp=template();
@@ -533,7 +533,7 @@
                     }
                     break;
                 case 7 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:79:4: rl= rule
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:79:4: rl= rule
                     {
                     pushFollow(FOLLOW_rule_in_statement185);
                     rl=rule();
@@ -544,7 +544,7 @@
                     }
                     break;
                 case 8 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:81:4: qr= query
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:81:4: qr= query
                     {
                     pushFollow(FOLLOW_query_in_statement195);
                     qr=query();
@@ -555,7 +555,7 @@
                     }
                     break;
                 case 9 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:83:4: td= type_declaration
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:83:4: td= type_declaration
                     {
                     pushFollow(FOLLOW_type_declaration_in_statement205);
                     td=type_declaration();
@@ -580,7 +580,7 @@
 
 
     // $ANTLR start import_statement
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:87:1: import_statement returns [ImportDescr importDescr] : ^(importStart= VK_IMPORT importId= import_name ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:87:1: import_statement returns [ImportDescr importDescr] : ^(importStart= VK_IMPORT importId= import_name ) ;
     public final ImportDescr import_statement() throws RecognitionException {
         ImportDescr importDescr = null;
 
@@ -589,8 +589,8 @@
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:88:2: ( ^(importStart= VK_IMPORT importId= import_name ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:88:4: ^(importStart= VK_IMPORT importId= import_name )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:88:2: ( ^(importStart= VK_IMPORT importId= import_name ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:88:4: ^(importStart= VK_IMPORT importId= import_name )
             {
             importStart=(DroolsTree)input.LT(1);
             match(input,VK_IMPORT,FOLLOW_VK_IMPORT_in_import_statement226); 
@@ -619,7 +619,7 @@
 
 
     // $ANTLR start function_import_statement
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:92:1: function_import_statement returns [FunctionImportDescr functionImportDescr] : ^(importStart= VT_FUNCTION_IMPORT VK_FUNCTION importId= import_name ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:92:1: function_import_statement returns [FunctionImportDescr functionImportDescr] : ^(importStart= VT_FUNCTION_IMPORT VK_FUNCTION importId= import_name ) ;
     public final FunctionImportDescr function_import_statement() throws RecognitionException {
         FunctionImportDescr functionImportDescr = null;
 
@@ -628,8 +628,8 @@
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:93:2: ( ^(importStart= VT_FUNCTION_IMPORT VK_FUNCTION importId= import_name ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:93:4: ^(importStart= VT_FUNCTION_IMPORT VK_FUNCTION importId= import_name )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:93:2: ( ^(importStart= VT_FUNCTION_IMPORT VK_FUNCTION importId= import_name ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:93:4: ^(importStart= VT_FUNCTION_IMPORT VK_FUNCTION importId= import_name )
             {
             importStart=(DroolsTree)input.LT(1);
             match(input,VT_FUNCTION_IMPORT,FOLLOW_VT_FUNCTION_IMPORT_in_function_import_statement252); 
@@ -663,7 +663,7 @@
     };
 
     // $ANTLR start import_name
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:97:1: import_name returns [List idList, DroolsTree dotStar] : ^( VT_IMPORT_ID (tempList+= ID )+ (tempDotStar= DOT_STAR )? ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:97:1: import_name returns [List idList, DroolsTree dotStar] : ^( VT_IMPORT_ID (tempList+= ID )+ (tempDotStar= DOT_STAR )? ) ;
     public final import_name_return import_name() throws RecognitionException {
         import_name_return retval = new import_name_return();
         retval.start = input.LT(1);
@@ -673,13 +673,13 @@
         List list_tempList=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:98:2: ( ^( VT_IMPORT_ID (tempList+= ID )+ (tempDotStar= DOT_STAR )? ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:98:4: ^( VT_IMPORT_ID (tempList+= ID )+ (tempDotStar= DOT_STAR )? )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:98:2: ( ^( VT_IMPORT_ID (tempList+= ID )+ (tempDotStar= DOT_STAR )? ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:98:4: ^( VT_IMPORT_ID (tempList+= ID )+ (tempDotStar= DOT_STAR )? )
             {
             match(input,VT_IMPORT_ID,FOLLOW_VT_IMPORT_ID_in_import_name277); 
 
             match(input, Token.DOWN, null); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:98:27: (tempList+= ID )+
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:98:27: (tempList+= ID )+
             int cnt5=0;
             loop5:
             do {
@@ -693,7 +693,7 @@
 
                 switch (alt5) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:98:27: tempList+= ID
+            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:98:27: tempList+= ID
             	    {
             	    tempList=(DroolsTree)input.LT(1);
             	    match(input,ID,FOLLOW_ID_in_import_name281); 
@@ -713,7 +713,7 @@
                 cnt5++;
             } while (true);
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:98:44: (tempDotStar= DOT_STAR )?
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:98:44: (tempDotStar= DOT_STAR )?
             int alt6=2;
             int LA6_0 = input.LA(1);
 
@@ -722,7 +722,7 @@
             }
             switch (alt6) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:98:44: tempDotStar= DOT_STAR
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:98:44: tempDotStar= DOT_STAR
                     {
                     tempDotStar=(DroolsTree)input.LT(1);
                     match(input,DOT_STAR,FOLLOW_DOT_STAR_in_import_name286); 
@@ -755,7 +755,7 @@
     };
 
     // $ANTLR start global
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:103:1: global returns [GlobalDescr globalDescr] : ^(start= VK_GLOBAL dt= data_type globalId= VT_GLOBAL_ID ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:103:1: global returns [GlobalDescr globalDescr] : ^(start= VK_GLOBAL dt= data_type globalId= VT_GLOBAL_ID ) ;
     public final global_return global() throws RecognitionException {
         global_return retval = new global_return();
         retval.start = input.LT(1);
@@ -766,8 +766,8 @@
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:104:2: ( ^(start= VK_GLOBAL dt= data_type globalId= VT_GLOBAL_ID ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:104:4: ^(start= VK_GLOBAL dt= data_type globalId= VT_GLOBAL_ID )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:104:2: ( ^(start= VK_GLOBAL dt= data_type globalId= VT_GLOBAL_ID ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:104:4: ^(start= VK_GLOBAL dt= data_type globalId= VT_GLOBAL_ID )
             {
             start=(DroolsTree)input.LT(1);
             match(input,VK_GLOBAL,FOLLOW_VK_GLOBAL_in_global309); 
@@ -801,7 +801,7 @@
     };
 
     // $ANTLR start function
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:108:1: function returns [FunctionDescr functionDescr] : ^(start= VK_FUNCTION (dt= data_type )? functionId= VT_FUNCTION_ID params= parameters content= VT_CURLY_CHUNK ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:108:1: function returns [FunctionDescr functionDescr] : ^(start= VK_FUNCTION (dt= data_type )? functionId= VT_FUNCTION_ID params= parameters content= VT_CURLY_CHUNK ) ;
     public final function_return function() throws RecognitionException {
         function_return retval = new function_return();
         retval.start = input.LT(1);
@@ -815,14 +815,14 @@
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:109:2: ( ^(start= VK_FUNCTION (dt= data_type )? functionId= VT_FUNCTION_ID params= parameters content= VT_CURLY_CHUNK ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:109:4: ^(start= VK_FUNCTION (dt= data_type )? functionId= VT_FUNCTION_ID params= parameters content= VT_CURLY_CHUNK )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:109:2: ( ^(start= VK_FUNCTION (dt= data_type )? functionId= VT_FUNCTION_ID params= parameters content= VT_CURLY_CHUNK ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:109:4: ^(start= VK_FUNCTION (dt= data_type )? functionId= VT_FUNCTION_ID params= parameters content= VT_CURLY_CHUNK )
             {
             start=(DroolsTree)input.LT(1);
             match(input,VK_FUNCTION,FOLLOW_VK_FUNCTION_in_function339); 
 
             match(input, Token.DOWN, null); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:109:26: (dt= data_type )?
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:109:26: (dt= data_type )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -831,7 +831,7 @@
             }
             switch (alt7) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:109:26: dt= data_type
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:109:26: dt= data_type
                     {
                     pushFollow(FOLLOW_data_type_in_function343);
                     dt=data_type();
@@ -873,7 +873,7 @@
     };
 
     // $ANTLR start template
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:113:1: template returns [FactTemplateDescr factTemplateDescr] : ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= END ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:113:1: template returns [FactTemplateDescr factTemplateDescr] : ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= END ) ;
     public final template_return template() throws RecognitionException {
         template_return retval = new template_return();
         retval.start = input.LT(1);
@@ -888,8 +888,8 @@
         	List slotList = new LinkedList<FieldTemplateDescr>();
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:116:3: ( ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= END ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:116:5: ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= END )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:116:3: ( ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= END ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:116:5: ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= END )
             {
             start=(DroolsTree)input.LT(1);
             match(input,VK_TEMPLATE,FOLLOW_VK_TEMPLATE_in_template381); 
@@ -897,7 +897,7 @@
             match(input, Token.DOWN, null); 
             id=(DroolsTree)input.LT(1);
             match(input,VT_TEMPLATE_ID,FOLLOW_VT_TEMPLATE_ID_in_template385); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:117:4: (ts= template_slot )+
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:117:4: (ts= template_slot )+
             int cnt8=0;
             loop8:
             do {
@@ -911,7 +911,7 @@
 
                 switch (alt8) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:117:6: ts= template_slot
+            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:117:6: ts= template_slot
             	    {
             	    pushFollow(FOLLOW_template_slot_in_template394);
             	    ts=template_slot();
@@ -952,7 +952,7 @@
 
 
     // $ANTLR start template_slot
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:121:1: template_slot returns [FieldTemplateDescr fieldTemplateDescr] : ^( VT_SLOT dt= data_type id= VT_SLOT_ID ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:121:1: template_slot returns [FieldTemplateDescr fieldTemplateDescr] : ^( VT_SLOT dt= data_type id= VT_SLOT_ID ) ;
     public final FieldTemplateDescr template_slot() throws RecognitionException {
         FieldTemplateDescr fieldTemplateDescr = null;
 
@@ -961,8 +961,8 @@
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:122:2: ( ^( VT_SLOT dt= data_type id= VT_SLOT_ID ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:122:4: ^( VT_SLOT dt= data_type id= VT_SLOT_ID )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:122:2: ( ^( VT_SLOT dt= data_type id= VT_SLOT_ID ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:122:4: ^( VT_SLOT dt= data_type id= VT_SLOT_ID )
             {
             match(input,VT_SLOT,FOLLOW_VT_SLOT_in_template_slot422); 
 
@@ -995,7 +995,7 @@
     };
 
     // $ANTLR start query
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:126:1: query returns [QueryDescr queryDescr] : ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= END ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:126:1: query returns [QueryDescr queryDescr] : ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= END ) ;
     public final query_return query() throws RecognitionException {
         query_return retval = new query_return();
         retval.start = input.LT(1);
@@ -1009,8 +1009,8 @@
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:127:2: ( ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= END ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:127:4: ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= END )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:127:2: ( ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= END ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:127:4: ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= END )
             {
             start=(DroolsTree)input.LT(1);
             match(input,VK_QUERY,FOLLOW_VK_QUERY_in_query452); 
@@ -1018,7 +1018,7 @@
             match(input, Token.DOWN, null); 
             id=(DroolsTree)input.LT(1);
             match(input,VT_QUERY_ID,FOLLOW_VT_QUERY_ID_in_query456); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:127:42: (params= parameters )?
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:127:42: (params= parameters )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -1027,7 +1027,7 @@
             }
             switch (alt9) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:127:42: params= parameters
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:127:42: params= parameters
                     {
                     pushFollow(FOLLOW_parameters_in_query460);
                     params=parameters();
@@ -1067,7 +1067,7 @@
     };
 
     // $ANTLR start rule
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:131:1: rule returns [RuleDescr ruleDescr] : ^(start= VK_RULE id= VT_RULE_ID (ra= rule_attributes )? (wn= when_part )? content= VT_RHS_CHUNK ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:131:1: rule returns [RuleDescr ruleDescr] : ^(start= VK_RULE id= VT_RULE_ID (ra= rule_attributes )? (dm= decl_metadata )* (wn= when_part )? content= VT_RHS_CHUNK ) ;
     public final rule_return rule() throws RecognitionException {
         rule_return retval = new rule_return();
         retval.start = input.LT(1);
@@ -1077,20 +1077,23 @@
         DroolsTree content=null;
         List ra = null;
 
+        Map dm = null;
+
         AndDescr wn = null;
 
 
+        	List<Map> declMetadaList = new LinkedList<Map>();
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:132:2: ( ^(start= VK_RULE id= VT_RULE_ID (ra= rule_attributes )? (wn= when_part )? content= VT_RHS_CHUNK ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:132:4: ^(start= VK_RULE id= VT_RULE_ID (ra= rule_attributes )? (wn= when_part )? content= VT_RHS_CHUNK )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:133:2: ( ^(start= VK_RULE id= VT_RULE_ID (ra= rule_attributes )? (dm= decl_metadata )* (wn= when_part )? content= VT_RHS_CHUNK ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:133:4: ^(start= VK_RULE id= VT_RULE_ID (ra= rule_attributes )? (dm= decl_metadata )* (wn= when_part )? content= VT_RHS_CHUNK )
             {
             start=(DroolsTree)input.LT(1);
-            match(input,VK_RULE,FOLLOW_VK_RULE_in_rule491); 
+            match(input,VK_RULE,FOLLOW_VK_RULE_in_rule496); 
 
             match(input, Token.DOWN, null); 
             id=(DroolsTree)input.LT(1);
-            match(input,VT_RULE_ID,FOLLOW_VT_RULE_ID_in_rule495); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:132:36: (ra= rule_attributes )?
+            match(input,VT_RULE_ID,FOLLOW_VT_RULE_ID_in_rule500); 
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:133:36: (ra= rule_attributes )?
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -1099,9 +1102,9 @@
             }
             switch (alt10) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:132:36: ra= rule_attributes
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:133:36: ra= rule_attributes
                     {
-                    pushFollow(FOLLOW_rule_attributes_in_rule499);
+                    pushFollow(FOLLOW_rule_attributes_in_rule504);
                     ra=rule_attributes();
                     _fsp--;
 
@@ -1111,18 +1114,47 @@
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:132:56: (wn= when_part )?
-            int alt11=2;
-            int LA11_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:134:3: (dm= decl_metadata )*
+            loop11:
+            do {
+                int alt11=2;
+                int LA11_0 = input.LA(1);
 
-            if ( (LA11_0==WHEN) ) {
-                alt11=1;
+                if ( (LA11_0==AT) ) {
+                    alt11=1;
+                }
+
+
+                switch (alt11) {
+            	case 1 :
+            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:134:4: dm= decl_metadata
+            	    {
+            	    pushFollow(FOLLOW_decl_metadata_in_rule513);
+            	    dm=decl_metadata();
+            	    _fsp--;
+
+            	    declMetadaList.add(dm);	
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop11;
+                }
+            } while (true);
+
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:135:6: (wn= when_part )?
+            int alt12=2;
+            int LA12_0 = input.LA(1);
+
+            if ( (LA12_0==WHEN) ) {
+                alt12=1;
             }
-            switch (alt11) {
+            switch (alt12) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:132:56: wn= when_part
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:135:6: wn= when_part
                     {
-                    pushFollow(FOLLOW_when_part_in_rule504);
+                    pushFollow(FOLLOW_when_part_in_rule525);
                     wn=when_part();
                     _fsp--;
 
@@ -1133,10 +1165,10 @@
             }
 
             content=(DroolsTree)input.LT(1);
-            match(input,VT_RHS_CHUNK,FOLLOW_VT_RHS_CHUNK_in_rule509); 
+            match(input,VT_RHS_CHUNK,FOLLOW_VT_RHS_CHUNK_in_rule530); 
 
             match(input, Token.UP, null); 
-            	retval.ruleDescr = factory.createRule(start, id, ra, wn, content);	
+            	retval.ruleDescr = factory.createRule(start, id, ra, wn, content, declMetadaList);	
 
             }
 
@@ -1153,7 +1185,7 @@
 
 
     // $ANTLR start when_part
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:136:1: when_part returns [AndDescr andDescr] : WHEN lh= lhs_block ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:139:1: when_part returns [AndDescr andDescr] : WHEN lh= lhs_block ;
     public final AndDescr when_part() throws RecognitionException {
         AndDescr andDescr = null;
 
@@ -1161,11 +1193,11 @@
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:137:2: ( WHEN lh= lhs_block )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:137:4: WHEN lh= lhs_block
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:140:2: ( WHEN lh= lhs_block )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:140:4: WHEN lh= lhs_block
             {
-            match(input,WHEN,FOLLOW_WHEN_in_when_part528); 
-            pushFollow(FOLLOW_lhs_block_in_when_part532);
+            match(input,WHEN,FOLLOW_WHEN_in_when_part549); 
+            pushFollow(FOLLOW_lhs_block_in_when_part553);
             lh=lhs_block();
             _fsp--;
 
@@ -1186,7 +1218,7 @@
 
 
     // $ANTLR start rule_attributes
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:141:1: rule_attributes returns [List attrList] : ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? (rl= rule_attribute )+ ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:144:1: rule_attributes returns [List attrList] : ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? (rl= rule_attribute )+ ) ;
     public final List rule_attributes() throws RecognitionException {
         List attrList = null;
 
@@ -1197,47 +1229,47 @@
         	attrList = new LinkedList<AttributeDescr>();
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:144:3: ( ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? (rl= rule_attribute )+ ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:144:5: ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? (rl= rule_attribute )+ )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:147:3: ( ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? (rl= rule_attribute )+ ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:147:5: ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? (rl= rule_attribute )+ )
             {
-            match(input,VT_RULE_ATTRIBUTES,FOLLOW_VT_RULE_ATTRIBUTES_in_rule_attributes554); 
+            match(input,VT_RULE_ATTRIBUTES,FOLLOW_VT_RULE_ATTRIBUTES_in_rule_attributes575); 
 
             match(input, Token.DOWN, null); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:144:26: ( VK_ATTRIBUTES )?
-            int alt12=2;
-            int LA12_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:147:26: ( VK_ATTRIBUTES )?
+            int alt13=2;
+            int LA13_0 = input.LA(1);
 
-            if ( (LA12_0==VK_ATTRIBUTES) ) {
-                alt12=1;
+            if ( (LA13_0==VK_ATTRIBUTES) ) {
+                alt13=1;
             }
-            switch (alt12) {
+            switch (alt13) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:144:26: VK_ATTRIBUTES
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:147:26: VK_ATTRIBUTES
                     {
-                    match(input,VK_ATTRIBUTES,FOLLOW_VK_ATTRIBUTES_in_rule_attributes556); 
+                    match(input,VK_ATTRIBUTES,FOLLOW_VK_ATTRIBUTES_in_rule_attributes577); 
 
                     }
                     break;
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:144:41: (rl= rule_attribute )+
-            int cnt13=0;
-            loop13:
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:147:41: (rl= rule_attribute )+
+            int cnt14=0;
+            loop14:
             do {
-                int alt13=2;
-                int LA13_0 = input.LA(1);
+                int alt14=2;
+                int LA14_0 = input.LA(1);
 
-                if ( ((LA13_0>=VK_DATE_EFFECTIVE && LA13_0<=VK_ENABLED)) ) {
-                    alt13=1;
+                if ( ((LA14_0>=VK_DATE_EFFECTIVE && LA14_0<=VK_ENABLED)) ) {
+                    alt14=1;
                 }
 
 
-                switch (alt13) {
+                switch (alt14) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:144:42: rl= rule_attribute
+            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:147:42: rl= rule_attribute
             	    {
-            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes562);
+            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes583);
             	    rl=rule_attribute();
             	    _fsp--;
 
@@ -1247,12 +1279,12 @@
             	    break;
 
             	default :
-            	    if ( cnt13 >= 1 ) break loop13;
+            	    if ( cnt14 >= 1 ) break loop14;
                         EarlyExitException eee =
-                            new EarlyExitException(13, input);
+                            new EarlyExitException(14, input);
                         throw eee;
                 }
-                cnt13++;
+                cnt14++;
             } while (true);
 
 
@@ -1273,7 +1305,7 @@
 
 
     // $ANTLR start parameters
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:147:1: parameters returns [List paramList] : ^( VT_PARAM_LIST (p= param_definition )* ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:150:1: parameters returns [List paramList] : ^( VT_PARAM_LIST (p= param_definition )* ) ;
     public final List parameters() throws RecognitionException {
         List paramList = null;
 
@@ -1284,29 +1316,29 @@
         	paramList = new LinkedList<Map<BaseDescr, BaseDescr>>();
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:150:3: ( ^( VT_PARAM_LIST (p= param_definition )* ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:150:5: ^( VT_PARAM_LIST (p= param_definition )* )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:153:3: ( ^( VT_PARAM_LIST (p= param_definition )* ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:153:5: ^( VT_PARAM_LIST (p= param_definition )* )
             {
-            match(input,VT_PARAM_LIST,FOLLOW_VT_PARAM_LIST_in_parameters586); 
+            match(input,VT_PARAM_LIST,FOLLOW_VT_PARAM_LIST_in_parameters607); 
 
             if ( input.LA(1)==Token.DOWN ) {
                 match(input, Token.DOWN, null); 
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:150:21: (p= param_definition )*
-                loop14:
+                // src/main/resources/org/drools/lang/DescrBuilderTree.g:153:21: (p= param_definition )*
+                loop15:
                 do {
-                    int alt14=2;
-                    int LA14_0 = input.LA(1);
+                    int alt15=2;
+                    int LA15_0 = input.LA(1);
 
-                    if ( (LA14_0==VT_DATA_TYPE||LA14_0==ID) ) {
-                        alt14=1;
+                    if ( (LA15_0==VT_DATA_TYPE||LA15_0==ID) ) {
+                        alt15=1;
                     }
 
 
-                    switch (alt14) {
+                    switch (alt15) {
                 	case 1 :
-                	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:150:22: p= param_definition
+                	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:153:22: p= param_definition
                 	    {
-                	    pushFollow(FOLLOW_param_definition_in_parameters591);
+                	    pushFollow(FOLLOW_param_definition_in_parameters612);
                 	    p=param_definition();
                 	    _fsp--;
 
@@ -1316,7 +1348,7 @@
                 	    break;
 
                 	default :
-                	    break loop14;
+                	    break loop15;
                     }
                 } while (true);
 
@@ -1339,7 +1371,7 @@
 
 
     // $ANTLR start param_definition
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:153:1: param_definition returns [Map param] : (dt= data_type )? a= argument ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:156:1: param_definition returns [Map param] : (dt= data_type )? a= argument ;
     public final Map param_definition() throws RecognitionException {
         Map param = null;
 
@@ -1349,21 +1381,21 @@
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:154:2: ( (dt= data_type )? a= argument )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:154:4: (dt= data_type )? a= argument
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:157:2: ( (dt= data_type )? a= argument )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:157:4: (dt= data_type )? a= argument
             {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:154:6: (dt= data_type )?
-            int alt15=2;
-            int LA15_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:157:6: (dt= data_type )?
+            int alt16=2;
+            int LA16_0 = input.LA(1);
 
-            if ( (LA15_0==VT_DATA_TYPE) ) {
-                alt15=1;
+            if ( (LA16_0==VT_DATA_TYPE) ) {
+                alt16=1;
             }
-            switch (alt15) {
+            switch (alt16) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:154:6: dt= data_type
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:157:6: dt= data_type
                     {
-                    pushFollow(FOLLOW_data_type_in_param_definition613);
+                    pushFollow(FOLLOW_data_type_in_param_definition634);
                     dt=data_type();
                     _fsp--;
 
@@ -1373,7 +1405,7 @@
 
             }
 
-            pushFollow(FOLLOW_argument_in_param_definition618);
+            pushFollow(FOLLOW_argument_in_param_definition639);
             a=argument();
             _fsp--;
 
@@ -1395,7 +1427,7 @@
 
 
     // $ANTLR start argument
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:159:1: argument returns [BaseDescr arg] : id= ID ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:162:1: argument returns [BaseDescr arg] : id= ID ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ;
     public final BaseDescr argument() throws RecognitionException {
         BaseDescr arg = null;
 
@@ -1404,29 +1436,29 @@
         List list_rightList=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:160:2: (id= ID ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:160:4: id= ID ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:163:2: (id= ID ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:163:4: id= ID ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
             {
             id=(DroolsTree)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_argument638); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:160:10: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
-            loop16:
+            match(input,ID,FOLLOW_ID_in_argument659); 
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:163:10: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
+            loop17:
             do {
-                int alt16=2;
-                int LA16_0 = input.LA(1);
+                int alt17=2;
+                int LA17_0 = input.LA(1);
 
-                if ( (LA16_0==LEFT_SQUARE) ) {
-                    alt16=1;
+                if ( (LA17_0==LEFT_SQUARE) ) {
+                    alt17=1;
                 }
 
 
-                switch (alt16) {
+                switch (alt17) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:160:11: LEFT_SQUARE rightList+= RIGHT_SQUARE
+            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:163:11: LEFT_SQUARE rightList+= RIGHT_SQUARE
             	    {
-            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_argument641); 
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_argument662); 
             	    rightList=(DroolsTree)input.LT(1);
-            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_argument645); 
+            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_argument666); 
             	    if (list_rightList==null) list_rightList=new ArrayList();
             	    list_rightList.add(rightList);
 
@@ -1435,7 +1467,7 @@
             	    break;
 
             	default :
-            	    break loop16;
+            	    break loop17;
                 }
             } while (true);
 
@@ -1456,7 +1488,7 @@
 
 
     // $ANTLR start type_declaration
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:164:1: type_declaration returns [TypeDeclarationDescr declaration] : ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* END ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:167:1: type_declaration returns [TypeDeclarationDescr declaration] : ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* END ) ;
     public final TypeDeclarationDescr type_declaration() throws RecognitionException {
         TypeDeclarationDescr declaration = null;
 
@@ -1469,30 +1501,30 @@
         	List<Map> declMetadaList = new LinkedList<Map>();
         		List<TypeFieldDescr> declFieldList = new LinkedList<TypeFieldDescr>(); 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:167:2: ( ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* END ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:167:4: ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* END )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:170:2: ( ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* END ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:170:4: ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* END )
             {
-            match(input,VK_DECLARE,FOLLOW_VK_DECLARE_in_type_declaration671); 
+            match(input,VK_DECLARE,FOLLOW_VK_DECLARE_in_type_declaration692); 
 
             match(input, Token.DOWN, null); 
             id=(DroolsTree)input.LT(1);
-            match(input,VT_TYPE_DECLARE_ID,FOLLOW_VT_TYPE_DECLARE_ID_in_type_declaration675); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:168:4: (dm= decl_metadata )*
-            loop17:
+            match(input,VT_TYPE_DECLARE_ID,FOLLOW_VT_TYPE_DECLARE_ID_in_type_declaration696); 
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:171:4: (dm= decl_metadata )*
+            loop18:
             do {
-                int alt17=2;
-                int LA17_0 = input.LA(1);
+                int alt18=2;
+                int LA18_0 = input.LA(1);
 
-                if ( (LA17_0==AT) ) {
-                    alt17=1;
+                if ( (LA18_0==AT) ) {
+                    alt18=1;
                 }
 
 
-                switch (alt17) {
+                switch (alt18) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:168:5: dm= decl_metadata
+            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:171:5: dm= decl_metadata
             	    {
-            	    pushFollow(FOLLOW_decl_metadata_in_type_declaration684);
+            	    pushFollow(FOLLOW_decl_metadata_in_type_declaration705);
             	    dm=decl_metadata();
             	    _fsp--;
 
@@ -1502,26 +1534,26 @@
             	    break;
 
             	default :
-            	    break loop17;
+            	    break loop18;
                 }
             } while (true);
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:169:4: (df= decl_field )*
-            loop18:
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:172:4: (df= decl_field )*
+            loop19:
             do {
-                int alt18=2;
-                int LA18_0 = input.LA(1);
+                int alt19=2;
+                int LA19_0 = input.LA(1);
 
-                if ( (LA18_0==ID) ) {
-                    alt18=1;
+                if ( (LA19_0==ID) ) {
+                    alt19=1;
                 }
 
 
-                switch (alt18) {
+                switch (alt19) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:169:5: df= decl_field
+            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:172:5: df= decl_field
             	    {
-            	    pushFollow(FOLLOW_decl_field_in_type_declaration697);
+            	    pushFollow(FOLLOW_decl_field_in_type_declaration718);
             	    df=decl_field();
             	    _fsp--;
 
@@ -1531,11 +1563,11 @@
             	    break;
 
             	default :
-            	    break loop18;
+            	    break loop19;
                 }
             } while (true);
 
-            match(input,END,FOLLOW_END_in_type_declaration703); 
+            match(input,END,FOLLOW_END_in_type_declaration724); 
 
             match(input, Token.UP, null); 
             	declaration = factory.createTypeDeclr(id, declMetadaList, declFieldList);	
@@ -1555,7 +1587,7 @@
 
 
     // $ANTLR start decl_metadata
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:173:1: decl_metadata returns [Map attData] : ^( AT att= ID pc= VT_PAREN_CHUNK ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:176:1: decl_metadata returns [Map attData] : ^( AT att= ID pc= VT_PAREN_CHUNK ) ;
     public final Map decl_metadata() throws RecognitionException {
         Map attData = null;
 
@@ -1564,16 +1596,16 @@
 
         attData = new HashMap();
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:175:2: ( ^( AT att= ID pc= VT_PAREN_CHUNK ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:175:4: ^( AT att= ID pc= VT_PAREN_CHUNK )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:178:2: ( ^( AT att= ID pc= VT_PAREN_CHUNK ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:178:4: ^( AT att= ID pc= VT_PAREN_CHUNK )
             {
-            match(input,AT,FOLLOW_AT_in_decl_metadata728); 
+            match(input,AT,FOLLOW_AT_in_decl_metadata749); 
 
             match(input, Token.DOWN, null); 
             att=(DroolsTree)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_decl_metadata732); 
+            match(input,ID,FOLLOW_ID_in_decl_metadata753); 
             pc=(DroolsTree)input.LT(1);
-            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_decl_metadata736); 
+            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_decl_metadata757); 
 
             match(input, Token.UP, null); 
             	attData.put(att, pc);	
@@ -1593,7 +1625,7 @@
 
 
     // $ANTLR start decl_field
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:179:1: decl_field returns [TypeFieldDescr fieldDescr] : ^(id= ID (init= decl_field_initialization )? dt= data_type (dm= decl_metadata )* ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:182:1: decl_field returns [TypeFieldDescr fieldDescr] : ^(id= ID (init= decl_field_initialization )? dt= data_type (dm= decl_metadata )* ) ;
     public final TypeFieldDescr decl_field() throws RecognitionException {
         TypeFieldDescr fieldDescr = null;
 
@@ -1607,25 +1639,25 @@
 
         List<Map> declMetadaList = new LinkedList<Map>(); 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:181:2: ( ^(id= ID (init= decl_field_initialization )? dt= data_type (dm= decl_metadata )* ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:181:4: ^(id= ID (init= decl_field_initialization )? dt= data_type (dm= decl_metadata )* )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:184:2: ( ^(id= ID (init= decl_field_initialization )? dt= data_type (dm= decl_metadata )* ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:184:4: ^(id= ID (init= decl_field_initialization )? dt= data_type (dm= decl_metadata )* )
             {
             id=(DroolsTree)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_decl_field763); 
+            match(input,ID,FOLLOW_ID_in_decl_field784); 
 
             match(input, Token.DOWN, null); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:181:16: (init= decl_field_initialization )?
-            int alt19=2;
-            int LA19_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:184:16: (init= decl_field_initialization )?
+            int alt20=2;
+            int LA20_0 = input.LA(1);
 
-            if ( (LA19_0==EQUALS) ) {
-                alt19=1;
+            if ( (LA20_0==EQUALS) ) {
+                alt20=1;
             }
-            switch (alt19) {
+            switch (alt20) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:181:16: init= decl_field_initialization
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:184:16: init= decl_field_initialization
                     {
-                    pushFollow(FOLLOW_decl_field_initialization_in_decl_field767);
+                    pushFollow(FOLLOW_decl_field_initialization_in_decl_field788);
                     init=decl_field_initialization();
                     _fsp--;
 
@@ -1635,26 +1667,26 @@
 
             }
 
-            pushFollow(FOLLOW_data_type_in_decl_field772);
+            pushFollow(FOLLOW_data_type_in_decl_field793);
             dt=data_type();
             _fsp--;
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:181:57: (dm= decl_metadata )*
-            loop20:
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:184:57: (dm= decl_metadata )*
+            loop21:
             do {
-                int alt20=2;
-                int LA20_0 = input.LA(1);
+                int alt21=2;
+                int LA21_0 = input.LA(1);
 
-                if ( (LA20_0==AT) ) {
-                    alt20=1;
+                if ( (LA21_0==AT) ) {
+                    alt21=1;
                 }
 
 
-                switch (alt20) {
+                switch (alt21) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:181:58: dm= decl_metadata
+            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:184:58: dm= decl_metadata
             	    {
-            	    pushFollow(FOLLOW_decl_metadata_in_decl_field777);
+            	    pushFollow(FOLLOW_decl_metadata_in_decl_field798);
             	    dm=decl_metadata();
             	    _fsp--;
 
@@ -1664,7 +1696,7 @@
             	    break;
 
             	default :
-            	    break loop20;
+            	    break loop21;
                 }
             } while (true);
 
@@ -1687,21 +1719,21 @@
 
 
     // $ANTLR start decl_field_initialization
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:185:1: decl_field_initialization returns [String expr] : ^( EQUALS pc= VT_PAREN_CHUNK ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:188:1: decl_field_initialization returns [String expr] : ^( EQUALS pc= VT_PAREN_CHUNK ) ;
     public final String decl_field_initialization() throws RecognitionException {
         String expr = null;
 
         DroolsTree pc=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:186:2: ( ^( EQUALS pc= VT_PAREN_CHUNK ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:186:4: ^( EQUALS pc= VT_PAREN_CHUNK )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:189:2: ( ^( EQUALS pc= VT_PAREN_CHUNK ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:189:4: ^( EQUALS pc= VT_PAREN_CHUNK )
             {
-            match(input,EQUALS,FOLLOW_EQUALS_in_decl_field_initialization804); 
+            match(input,EQUALS,FOLLOW_EQUALS_in_decl_field_initialization825); 
 
             match(input, Token.DOWN, null); 
             pc=(DroolsTree)input.LT(1);
-            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_decl_field_initialization808); 
+            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_decl_field_initialization829); 
 
             match(input, Token.UP, null); 
             	expr = pc.getText().substring(1, pc.getText().length() -1 ).trim();	
@@ -1721,7 +1753,7 @@
 
 
     // $ANTLR start rule_attribute
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:190:1: rule_attribute returns [AttributeDescr attributeDescr] : ( ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_NO_LOOP (value= BOOL )? ) | ^(attrName= VK_AGENDA_GROUP value= STRING ) | ^(attrName= VK_DURATION value= INT ) | ^(attrName= VK_ACTIVATION_GROUP value= STRING ) | ^(attrName= VK_AUTO_FOCUS (value= BOOL )? ) | ^(attrName= VK_DATE_EFFECTIVE value= STRING ) | ^(attrName= VK_DATE_EXPIRES value= STRING ) | ^(attrName= VK_ENABLED value= BOOL ) | ^(attrName= VK_RULEFLOW_GROUP value= STRING ) | ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? ) | ^(attrName= VK_DIALECT value= STRING ) ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:193:1: rule_attribute returns [AttributeDescr attributeDescr] : ( ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_NO_LOOP (value= BOOL )? ) | ^(attrName= VK_AGENDA_GROUP value= STRING ) | ^(attrName= VK_DURATION value= INT ) | ^(attrName= VK_ACTIVATION_GROUP value= STRING ) | ^(attrName= VK_AUTO_FOCUS (value= BOOL )? ) | ^(attrName= VK_DATE_EFFECTIVE value= STRING ) | ^(attrName= VK_DATE_EXPIRES value= STRING ) | ^(attrName= VK_ENABLED value= BOOL ) | ^(attrName= VK_RULEFLOW_GROUP value= STRING ) | ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? ) | ^(attrName= VK_DIALECT value= STRING ) ) ;
     public final AttributeDescr rule_attribute() throws RecognitionException {
         AttributeDescr attributeDescr = null;
 
@@ -1729,117 +1761,117 @@
         DroolsTree value=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:191:2: ( ( ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_NO_LOOP (value= BOOL )? ) | ^(attrName= VK_AGENDA_GROUP value= STRING ) | ^(attrName= VK_DURATION value= INT ) | ^(attrName= VK_ACTIVATION_GROUP value= STRING ) | ^(attrName= VK_AUTO_FOCUS (value= BOOL )? ) | ^(attrName= VK_DATE_EFFECTIVE value= STRING ) | ^(attrName= VK_DATE_EXPIRES value= STRING ) | ^(attrName= VK_ENABLED value= BOOL ) | ^(attrName= VK_RULEFLOW_GROUP value= STRING ) | ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? ) | ^(attrName= VK_DIALECT value= STRING ) ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:191:4: ( ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_NO_LOOP (value= BOOL )? ) | ^(attrName= VK_AGENDA_GROUP value= STRING ) | ^(attrName= VK_DURATION value= INT ) | ^(attrName= VK_ACTIVATION_GROUP value= STRING ) | ^(attrName= VK_AUTO_FOCUS (value= BOOL )? ) | ^(attrName= VK_DATE_EFFECTIVE value= STRING ) | ^(attrName= VK_DATE_EXPIRES value= STRING ) | ^(attrName= VK_ENABLED value= BOOL ) | ^(attrName= VK_RULEFLOW_GROUP value= STRING ) | ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? ) | ^(attrName= VK_DIALECT value= STRING ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:194:2: ( ( ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_NO_LOOP (value= BOOL )? ) | ^(attrName= VK_AGENDA_GROUP value= STRING ) | ^(attrName= VK_DURATION value= INT ) | ^(attrName= VK_ACTIVATION_GROUP value= STRING ) | ^(attrName= VK_AUTO_FOCUS (value= BOOL )? ) | ^(attrName= VK_DATE_EFFECTIVE value= STRING ) | ^(attrName= VK_DATE_EXPIRES value= STRING ) | ^(attrName= VK_ENABLED value= BOOL ) | ^(attrName= VK_RULEFLOW_GROUP value= STRING ) | ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? ) | ^(attrName= VK_DIALECT value= STRING ) ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:194:4: ( ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_NO_LOOP (value= BOOL )? ) | ^(attrName= VK_AGENDA_GROUP value= STRING ) | ^(attrName= VK_DURATION value= INT ) | ^(attrName= VK_ACTIVATION_GROUP value= STRING ) | ^(attrName= VK_AUTO_FOCUS (value= BOOL )? ) | ^(attrName= VK_DATE_EFFECTIVE value= STRING ) | ^(attrName= VK_DATE_EXPIRES value= STRING ) | ^(attrName= VK_ENABLED value= BOOL ) | ^(attrName= VK_RULEFLOW_GROUP value= STRING ) | ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? ) | ^(attrName= VK_DIALECT value= STRING ) )
             {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:191:4: ( ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_NO_LOOP (value= BOOL )? ) | ^(attrName= VK_AGENDA_GROUP value= STRING ) | ^(attrName= VK_DURATION value= INT ) | ^(attrName= VK_ACTIVATION_GROUP value= STRING ) | ^(attrName= VK_AUTO_FOCUS (value= BOOL )? ) | ^(attrName= VK_DATE_EFFECTIVE value= STRING ) | ^(attrName= VK_DATE_EXPIRES value= STRING ) | ^(attrName= VK_ENABLED value= BOOL ) | ^(attrName= VK_RULEFLOW_GROUP value= STRING ) | ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? ) | ^(attrName= VK_DIALECT value= STRING ) )
-            int alt25=12;
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:194:4: ( ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_NO_LOOP (value= BOOL )? ) | ^(attrName= VK_AGENDA_GROUP value= STRING ) | ^(attrName= VK_DURATION value= INT ) | ^(attrName= VK_ACTIVATION_GROUP value= STRING ) | ^(attrName= VK_AUTO_FOCUS (value= BOOL )? ) | ^(attrName= VK_DATE_EFFECTIVE value= STRING ) | ^(attrName= VK_DATE_EXPIRES value= STRING ) | ^(attrName= VK_ENABLED value= BOOL ) | ^(attrName= VK_RULEFLOW_GROUP value= STRING ) | ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? ) | ^(attrName= VK_DIALECT value= STRING ) )
+            int alt26=12;
             switch ( input.LA(1) ) {
             case VK_SALIENCE:
                 {
-                alt25=1;
+                alt26=1;
                 }
                 break;
             case VK_NO_LOOP:
                 {
-                alt25=2;
+                alt26=2;
                 }
                 break;
             case VK_AGENDA_GROUP:
                 {
-                alt25=3;
+                alt26=3;
                 }
                 break;
             case VK_DURATION:
                 {
-                alt25=4;
+                alt26=4;
                 }
                 break;
             case VK_ACTIVATION_GROUP:
                 {
-                alt25=5;
+                alt26=5;
                 }
                 break;
             case VK_AUTO_FOCUS:
                 {
-                alt25=6;
+                alt26=6;
                 }
                 break;
             case VK_DATE_EFFECTIVE:
                 {
-                alt25=7;
+                alt26=7;
                 }
                 break;
             case VK_DATE_EXPIRES:
                 {
-                alt25=8;
+                alt26=8;
                 }
                 break;
             case VK_ENABLED:
                 {
-                alt25=9;
+                alt26=9;
                 }
                 break;
             case VK_RULEFLOW_GROUP:
                 {
-                alt25=10;
+                alt26=10;
                 }
                 break;
             case VK_LOCK_ON_ACTIVE:
                 {
-                alt25=11;
+                alt26=11;
                 }
                 break;
             case VK_DIALECT:
                 {
-                alt25=12;
+                alt26=12;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("191:4: ( ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_NO_LOOP (value= BOOL )? ) | ^(attrName= VK_AGENDA_GROUP value= STRING ) | ^(attrName= VK_DURATION value= INT ) | ^(attrName= VK_ACTIVATION_GROUP value= STRING ) | ^(attrName= VK_AUTO_FOCUS (value= BOOL )? ) | ^(attrName= VK_DATE_EFFECTIVE value= STRING ) | ^(attrName= VK_DATE_EXPIRES value= STRING ) | ^(attrName= VK_ENABLED value= BOOL ) | ^(attrName= VK_RULEFLOW_GROUP value= STRING ) | ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? ) | ^(attrName= VK_DIALECT value= STRING ) )", 25, 0, input);
+                    new NoViableAltException("194:4: ( ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) ) | ^(attrName= VK_NO_LOOP (value= BOOL )? ) | ^(attrName= VK_AGENDA_GROUP value= STRING ) | ^(attrName= VK_DURATION value= INT ) | ^(attrName= VK_ACTIVATION_GROUP value= STRING ) | ^(attrName= VK_AUTO_FOCUS (value= BOOL )? ) | ^(attrName= VK_DATE_EFFECTIVE value= STRING ) | ^(attrName= VK_DATE_EXPIRES value= STRING ) | ^(attrName= VK_ENABLED value= BOOL ) | ^(attrName= VK_RULEFLOW_GROUP value= STRING ) | ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? ) | ^(attrName= VK_DIALECT value= STRING ) )", 26, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt25) {
+            switch (alt26) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:191:5: ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:194:5: ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) )
                     {
                     attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_SALIENCE,FOLLOW_VK_SALIENCE_in_rule_attribute831); 
+                    match(input,VK_SALIENCE,FOLLOW_VK_SALIENCE_in_rule_attribute852); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:191:28: (value= INT | value= VT_PAREN_CHUNK )
-                    int alt21=2;
-                    int LA21_0 = input.LA(1);
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:194:28: (value= INT | value= VT_PAREN_CHUNK )
+                    int alt22=2;
+                    int LA22_0 = input.LA(1);
 
-                    if ( (LA21_0==INT) ) {
-                        alt21=1;
+                    if ( (LA22_0==INT) ) {
+                        alt22=1;
                     }
-                    else if ( (LA21_0==VT_PAREN_CHUNK) ) {
-                        alt21=2;
+                    else if ( (LA22_0==VT_PAREN_CHUNK) ) {
+                        alt22=2;
                     }
                     else {
                         NoViableAltException nvae =
-                            new NoViableAltException("191:28: (value= INT | value= VT_PAREN_CHUNK )", 21, 0, input);
+                            new NoViableAltException("194:28: (value= INT | value= VT_PAREN_CHUNK )", 22, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt21) {
+                    switch (alt22) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:191:29: value= INT
+                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:194:29: value= INT
                             {
                             value=(DroolsTree)input.LT(1);
-                            match(input,INT,FOLLOW_INT_in_rule_attribute836); 
+                            match(input,INT,FOLLOW_INT_in_rule_attribute857); 
 
                             }
                             break;
                         case 2 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:191:39: value= VT_PAREN_CHUNK
+                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:194:39: value= VT_PAREN_CHUNK
                             {
                             value=(DroolsTree)input.LT(1);
-                            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_rule_attribute840); 
+                            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_rule_attribute861); 
 
                             }
                             break;
@@ -1852,26 +1884,26 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:192:4: ^(attrName= VK_NO_LOOP (value= BOOL )? )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:195:4: ^(attrName= VK_NO_LOOP (value= BOOL )? )
                     {
                     attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_NO_LOOP,FOLLOW_VK_NO_LOOP_in_rule_attribute851); 
+                    match(input,VK_NO_LOOP,FOLLOW_VK_NO_LOOP_in_rule_attribute872); 
 
                     if ( input.LA(1)==Token.DOWN ) {
                         match(input, Token.DOWN, null); 
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:192:31: (value= BOOL )?
-                        int alt22=2;
-                        int LA22_0 = input.LA(1);
+                        // src/main/resources/org/drools/lang/DescrBuilderTree.g:195:31: (value= BOOL )?
+                        int alt23=2;
+                        int LA23_0 = input.LA(1);
 
-                        if ( (LA22_0==BOOL) ) {
-                            alt22=1;
+                        if ( (LA23_0==BOOL) ) {
+                            alt23=1;
                         }
-                        switch (alt22) {
+                        switch (alt23) {
                             case 1 :
-                                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:192:31: value= BOOL
+                                // src/main/resources/org/drools/lang/DescrBuilderTree.g:195:31: value= BOOL
                                 {
                                 value=(DroolsTree)input.LT(1);
-                                match(input,BOOL,FOLLOW_BOOL_in_rule_attribute855); 
+                                match(input,BOOL,FOLLOW_BOOL_in_rule_attribute876); 
 
                                 }
                                 break;
@@ -1885,68 +1917,68 @@
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:193:4: ^(attrName= VK_AGENDA_GROUP value= STRING )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:196:4: ^(attrName= VK_AGENDA_GROUP value= STRING )
                     {
                     attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_AGENDA_GROUP,FOLLOW_VK_AGENDA_GROUP_in_rule_attribute867); 
+                    match(input,VK_AGENDA_GROUP,FOLLOW_VK_AGENDA_GROUP_in_rule_attribute888); 
 
                     match(input, Token.DOWN, null); 
                     value=(DroolsTree)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_rule_attribute871); 
+                    match(input,STRING,FOLLOW_STRING_in_rule_attribute892); 
 
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 4 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:194:4: ^(attrName= VK_DURATION value= INT )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:197:4: ^(attrName= VK_DURATION value= INT )
                     {
                     attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_DURATION,FOLLOW_VK_DURATION_in_rule_attribute882); 
+                    match(input,VK_DURATION,FOLLOW_VK_DURATION_in_rule_attribute903); 
 
                     match(input, Token.DOWN, null); 
                     value=(DroolsTree)input.LT(1);
-                    match(input,INT,FOLLOW_INT_in_rule_attribute886); 
+                    match(input,INT,FOLLOW_INT_in_rule_attribute907); 
 
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 5 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:195:4: ^(attrName= VK_ACTIVATION_GROUP value= STRING )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:198:4: ^(attrName= VK_ACTIVATION_GROUP value= STRING )
                     {
                     attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_ACTIVATION_GROUP,FOLLOW_VK_ACTIVATION_GROUP_in_rule_attribute898); 
+                    match(input,VK_ACTIVATION_GROUP,FOLLOW_VK_ACTIVATION_GROUP_in_rule_attribute919); 
 
                     match(input, Token.DOWN, null); 
                     value=(DroolsTree)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_rule_attribute902); 
+                    match(input,STRING,FOLLOW_STRING_in_rule_attribute923); 
 
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 6 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:196:4: ^(attrName= VK_AUTO_FOCUS (value= BOOL )? )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:199:4: ^(attrName= VK_AUTO_FOCUS (value= BOOL )? )
                     {
                     attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_AUTO_FOCUS,FOLLOW_VK_AUTO_FOCUS_in_rule_attribute912); 
+                    match(input,VK_AUTO_FOCUS,FOLLOW_VK_AUTO_FOCUS_in_rule_attribute933); 
 
                     if ( input.LA(1)==Token.DOWN ) {
                         match(input, Token.DOWN, null); 
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:196:34: (value= BOOL )?
-                        int alt23=2;
-                        int LA23_0 = input.LA(1);
+                        // src/main/resources/org/drools/lang/DescrBuilderTree.g:199:34: (value= BOOL )?
+                        int alt24=2;
+                        int LA24_0 = input.LA(1);
 
-                        if ( (LA23_0==BOOL) ) {
-                            alt23=1;
+                        if ( (LA24_0==BOOL) ) {
+                            alt24=1;
                         }
-                        switch (alt23) {
+                        switch (alt24) {
                             case 1 :
-                                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:196:34: value= BOOL
+                                // src/main/resources/org/drools/lang/DescrBuilderTree.g:199:34: value= BOOL
                                 {
                                 value=(DroolsTree)input.LT(1);
-                                match(input,BOOL,FOLLOW_BOOL_in_rule_attribute916); 
+                                match(input,BOOL,FOLLOW_BOOL_in_rule_attribute937); 
 
                                 }
                                 break;
@@ -1960,82 +1992,82 @@
                     }
                     break;
                 case 7 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:197:4: ^(attrName= VK_DATE_EFFECTIVE value= STRING )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:200:4: ^(attrName= VK_DATE_EFFECTIVE value= STRING )
                     {
                     attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_DATE_EFFECTIVE,FOLLOW_VK_DATE_EFFECTIVE_in_rule_attribute927); 
+                    match(input,VK_DATE_EFFECTIVE,FOLLOW_VK_DATE_EFFECTIVE_in_rule_attribute948); 
 
                     match(input, Token.DOWN, null); 
                     value=(DroolsTree)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_rule_attribute931); 
+                    match(input,STRING,FOLLOW_STRING_in_rule_attribute952); 
 
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 8 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:198:4: ^(attrName= VK_DATE_EXPIRES value= STRING )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:201:4: ^(attrName= VK_DATE_EXPIRES value= STRING )
                     {
                     attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_DATE_EXPIRES,FOLLOW_VK_DATE_EXPIRES_in_rule_attribute941); 
+                    match(input,VK_DATE_EXPIRES,FOLLOW_VK_DATE_EXPIRES_in_rule_attribute962); 
 
                     match(input, Token.DOWN, null); 
                     value=(DroolsTree)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_rule_attribute945); 
+                    match(input,STRING,FOLLOW_STRING_in_rule_attribute966); 
 
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 9 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:199:4: ^(attrName= VK_ENABLED value= BOOL )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:202:4: ^(attrName= VK_ENABLED value= BOOL )
                     {
                     attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_ENABLED,FOLLOW_VK_ENABLED_in_rule_attribute955); 
+                    match(input,VK_ENABLED,FOLLOW_VK_ENABLED_in_rule_attribute976); 
 
                     match(input, Token.DOWN, null); 
                     value=(DroolsTree)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_rule_attribute959); 
+                    match(input,BOOL,FOLLOW_BOOL_in_rule_attribute980); 
 
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 10 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:200:4: ^(attrName= VK_RULEFLOW_GROUP value= STRING )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:203:4: ^(attrName= VK_RULEFLOW_GROUP value= STRING )
                     {
                     attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_RULEFLOW_GROUP,FOLLOW_VK_RULEFLOW_GROUP_in_rule_attribute969); 
+                    match(input,VK_RULEFLOW_GROUP,FOLLOW_VK_RULEFLOW_GROUP_in_rule_attribute990); 
 
                     match(input, Token.DOWN, null); 
                     value=(DroolsTree)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_rule_attribute973); 
+                    match(input,STRING,FOLLOW_STRING_in_rule_attribute994); 
 
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 11 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:201:4: ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:204:4: ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? )
                     {
                     attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_LOCK_ON_ACTIVE,FOLLOW_VK_LOCK_ON_ACTIVE_in_rule_attribute983); 
+                    match(input,VK_LOCK_ON_ACTIVE,FOLLOW_VK_LOCK_ON_ACTIVE_in_rule_attribute1004); 
 
                     if ( input.LA(1)==Token.DOWN ) {
                         match(input, Token.DOWN, null); 
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:201:38: (value= BOOL )?
-                        int alt24=2;
-                        int LA24_0 = input.LA(1);
+                        // src/main/resources/org/drools/lang/DescrBuilderTree.g:204:38: (value= BOOL )?
+                        int alt25=2;
+                        int LA25_0 = input.LA(1);
 
-                        if ( (LA24_0==BOOL) ) {
-                            alt24=1;
+                        if ( (LA25_0==BOOL) ) {
+                            alt25=1;
                         }
-                        switch (alt24) {
+                        switch (alt25) {
                             case 1 :
-                                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:201:38: value= BOOL
+                                // src/main/resources/org/drools/lang/DescrBuilderTree.g:204:38: value= BOOL
                                 {
                                 value=(DroolsTree)input.LT(1);
-                                match(input,BOOL,FOLLOW_BOOL_in_rule_attribute987); 
+                                match(input,BOOL,FOLLOW_BOOL_in_rule_attribute1008); 
 
                                 }
                                 break;
@@ -2049,14 +2081,14 @@
                     }
                     break;
                 case 12 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:202:4: ^(attrName= VK_DIALECT value= STRING )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:205:4: ^(attrName= VK_DIALECT value= STRING )
                     {
                     attrName=(DroolsTree)input.LT(1);
-                    match(input,VK_DIALECT,FOLLOW_VK_DIALECT_in_rule_attribute997); 
+                    match(input,VK_DIALECT,FOLLOW_VK_DIALECT_in_rule_attribute1018); 
 
                     match(input, Token.DOWN, null); 
                     value=(DroolsTree)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_rule_attribute1001); 
+                    match(input,STRING,FOLLOW_STRING_in_rule_attribute1022); 
 
                     match(input, Token.UP, null); 
 
@@ -2082,7 +2114,7 @@
 
 
     // $ANTLR start lhs_block
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:206:1: lhs_block returns [AndDescr andDescr] : ^( VT_AND_IMPLICIT (dt= lhs )* ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:209:1: lhs_block returns [AndDescr andDescr] : ^( VT_AND_IMPLICIT (dt= lhs )* ) ;
     public final AndDescr lhs_block() throws RecognitionException {
         AndDescr andDescr = null;
 
@@ -2093,29 +2125,29 @@
         	andDescr = new AndDescr();
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:209:3: ( ^( VT_AND_IMPLICIT (dt= lhs )* ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:209:5: ^( VT_AND_IMPLICIT (dt= lhs )* )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:212:3: ( ^( VT_AND_IMPLICIT (dt= lhs )* ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:212:5: ^( VT_AND_IMPLICIT (dt= lhs )* )
             {
-            match(input,VT_AND_IMPLICIT,FOLLOW_VT_AND_IMPLICIT_in_lhs_block1026); 
+            match(input,VT_AND_IMPLICIT,FOLLOW_VT_AND_IMPLICIT_in_lhs_block1047); 
 
             if ( input.LA(1)==Token.DOWN ) {
                 match(input, Token.DOWN, null); 
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:209:23: (dt= lhs )*
-                loop26:
+                // src/main/resources/org/drools/lang/DescrBuilderTree.g:212:23: (dt= lhs )*
+                loop27:
                 do {
-                    int alt26=2;
-                    int LA26_0 = input.LA(1);
+                    int alt27=2;
+                    int LA27_0 = input.LA(1);
 
-                    if ( ((LA26_0>=VT_AND_PREFIX && LA26_0<=VT_OR_INFIX)||LA26_0==VT_PATTERN||LA26_0==VK_EVAL||LA26_0==VK_NOT||(LA26_0>=VK_EXISTS && LA26_0<=VK_FORALL)||LA26_0==FROM) ) {
-                        alt26=1;
+                    if ( ((LA27_0>=VT_AND_PREFIX && LA27_0<=VT_OR_INFIX)||LA27_0==VT_PATTERN||LA27_0==VK_EVAL||LA27_0==VK_NOT||(LA27_0>=VK_EXISTS && LA27_0<=VK_FORALL)||LA27_0==FROM) ) {
+                        alt27=1;
                     }
 
 
-                    switch (alt26) {
+                    switch (alt27) {
                 	case 1 :
-                	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:209:24: dt= lhs
+                	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:212:24: dt= lhs
                 	    {
-                	    pushFollow(FOLLOW_lhs_in_lhs_block1031);
+                	    pushFollow(FOLLOW_lhs_in_lhs_block1052);
                 	    dt=lhs();
                 	    _fsp--;
 
@@ -2125,7 +2157,7 @@
                 	    break;
 
                 	default :
-                	    break loop26;
+                	    break loop27;
                     }
                 } while (true);
 
@@ -2151,7 +2183,7 @@
     };
 
     // $ANTLR start lhs
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:212:1: lhs returns [BaseDescr baseDescr] : ( ^(start= VT_OR_PREFIX (dt= lhs )+ ) | ^(start= VT_OR_INFIX dt1= lhs dt2= lhs ) | ^(start= VT_AND_PREFIX (dt= lhs )+ ) | ^(start= VT_AND_INFIX dt1= lhs dt2= lhs ) | ^(start= VK_EXISTS dt= lhs ) | ^(start= VK_NOT dt= lhs ) | ^(start= VK_EVAL pc= VT_PAREN_CHUNK ) | ^(start= VK_FORALL (dt= lhs )+ ) | ^( FROM pn= lhs_pattern fe= from_elements ) | pn= lhs_pattern );
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:215:1: lhs returns [BaseDescr baseDescr] : ( ^(start= VT_OR_PREFIX (dt= lhs )+ ) | ^(start= VT_OR_INFIX dt1= lhs dt2= lhs ) | ^(start= VT_AND_PREFIX (dt= lhs )+ ) | ^(start= VT_AND_INFIX dt1= lhs dt2= lhs ) | ^(start= VK_EXISTS dt= lhs ) | ^(start= VK_NOT dt= lhs ) | ^(start= VK_EVAL pc= VT_PAREN_CHUNK ) | ^(start= VK_FORALL (dt= lhs )+ ) | ^( FROM pn= lhs_pattern fe= from_elements ) | pn= lhs_pattern );
     public final lhs_return lhs() throws RecognitionException {
         lhs_return retval = new lhs_return();
         retval.start = input.LT(1);
@@ -2173,91 +2205,91 @@
         	List<BaseDescr> lhsList = new LinkedList<BaseDescr>();
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:215:3: ( ^(start= VT_OR_PREFIX (dt= lhs )+ ) | ^(start= VT_OR_INFIX dt1= lhs dt2= lhs ) | ^(start= VT_AND_PREFIX (dt= lhs )+ ) | ^(start= VT_AND_INFIX dt1= lhs dt2= lhs ) | ^(start= VK_EXISTS dt= lhs ) | ^(start= VK_NOT dt= lhs ) | ^(start= VK_EVAL pc= VT_PAREN_CHUNK ) | ^(start= VK_FORALL (dt= lhs )+ ) | ^( FROM pn= lhs_pattern fe= from_elements ) | pn= lhs_pattern )
-            int alt30=10;
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:218:3: ( ^(start= VT_OR_PREFIX (dt= lhs )+ ) | ^(start= VT_OR_INFIX dt1= lhs dt2= lhs ) | ^(start= VT_AND_PREFIX (dt= lhs )+ ) | ^(start= VT_AND_INFIX dt1= lhs dt2= lhs ) | ^(start= VK_EXISTS dt= lhs ) | ^(start= VK_NOT dt= lhs ) | ^(start= VK_EVAL pc= VT_PAREN_CHUNK ) | ^(start= VK_FORALL (dt= lhs )+ ) | ^( FROM pn= lhs_pattern fe= from_elements ) | pn= lhs_pattern )
+            int alt31=10;
             switch ( input.LA(1) ) {
             case VT_OR_PREFIX:
                 {
-                alt30=1;
+                alt31=1;
                 }
                 break;
             case VT_OR_INFIX:
                 {
-                alt30=2;
+                alt31=2;
                 }
                 break;
             case VT_AND_PREFIX:
                 {
-                alt30=3;
+                alt31=3;
                 }
                 break;
             case VT_AND_INFIX:
                 {
-                alt30=4;
+                alt31=4;
                 }
                 break;
             case VK_EXISTS:
                 {
-                alt30=5;
+                alt31=5;
                 }
                 break;
             case VK_NOT:
                 {
-                alt30=6;
+                alt31=6;
                 }
                 break;
             case VK_EVAL:
                 {
-                alt30=7;
+                alt31=7;
                 }
                 break;
             case VK_FORALL:
                 {
-                alt30=8;
+                alt31=8;
                 }
                 break;
             case FROM:
                 {
-                alt30=9;
+                alt31=9;
                 }
                 break;
             case VT_PATTERN:
                 {
-                alt30=10;
+                alt31=10;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("212:1: lhs returns [BaseDescr baseDescr] : ( ^(start= VT_OR_PREFIX (dt= lhs )+ ) | ^(start= VT_OR_INFIX dt1= lhs dt2= lhs ) | ^(start= VT_AND_PREFIX (dt= lhs )+ ) | ^(start= VT_AND_INFIX dt1= lhs dt2= lhs ) | ^(start= VK_EXISTS dt= lhs ) | ^(start= VK_NOT dt= lhs ) | ^(start= VK_EVAL pc= VT_PAREN_CHUNK ) | ^(start= VK_FORALL (dt= lhs )+ ) | ^( FROM pn= lhs_pattern fe= from_elements ) | pn= lhs_pattern );", 30, 0, input);
+                    new NoViableAltException("215:1: lhs returns [BaseDescr baseDescr] : ( ^(start= VT_OR_PREFIX (dt= lhs )+ ) | ^(start= VT_OR_INFIX dt1= lhs dt2= lhs ) | ^(start= VT_AND_PREFIX (dt= lhs )+ ) | ^(start= VT_AND_INFIX dt1= lhs dt2= lhs ) | ^(start= VK_EXISTS dt= lhs ) | ^(start= VK_NOT dt= lhs ) | ^(start= VK_EVAL pc= VT_PAREN_CHUNK ) | ^(start= VK_FORALL (dt= lhs )+ ) | ^( FROM pn= lhs_pattern fe= from_elements ) | pn= lhs_pattern );", 31, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt30) {
+            switch (alt31) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:215:5: ^(start= VT_OR_PREFIX (dt= lhs )+ )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:218:5: ^(start= VT_OR_PREFIX (dt= lhs )+ )
                     {
                     start=(DroolsTree)input.LT(1);
-                    match(input,VT_OR_PREFIX,FOLLOW_VT_OR_PREFIX_in_lhs1057); 
+                    match(input,VT_OR_PREFIX,FOLLOW_VT_OR_PREFIX_in_lhs1078); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:215:26: (dt= lhs )+
-                    int cnt27=0;
-                    loop27:
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:218:26: (dt= lhs )+
+                    int cnt28=0;
+                    loop28:
                     do {
-                        int alt27=2;
-                        int LA27_0 = input.LA(1);
+                        int alt28=2;
+                        int LA28_0 = input.LA(1);
 
-                        if ( ((LA27_0>=VT_AND_PREFIX && LA27_0<=VT_OR_INFIX)||LA27_0==VT_PATTERN||LA27_0==VK_EVAL||LA27_0==VK_NOT||(LA27_0>=VK_EXISTS && LA27_0<=VK_FORALL)||LA27_0==FROM) ) {
-                            alt27=1;
+                        if ( ((LA28_0>=VT_AND_PREFIX && LA28_0<=VT_OR_INFIX)||LA28_0==VT_PATTERN||LA28_0==VK_EVAL||LA28_0==VK_NOT||(LA28_0>=VK_EXISTS && LA28_0<=VK_FORALL)||LA28_0==FROM) ) {
+                            alt28=1;
                         }
 
 
-                        switch (alt27) {
+                        switch (alt28) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:215:27: dt= lhs
+                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:218:27: dt= lhs
                     	    {
-                    	    pushFollow(FOLLOW_lhs_in_lhs1062);
+                    	    pushFollow(FOLLOW_lhs_in_lhs1083);
                     	    dt=lhs();
                     	    _fsp--;
 
@@ -2267,12 +2299,12 @@
                     	    break;
 
                     	default :
-                    	    if ( cnt27 >= 1 ) break loop27;
+                    	    if ( cnt28 >= 1 ) break loop28;
                                 EarlyExitException eee =
-                                    new EarlyExitException(27, input);
+                                    new EarlyExitException(28, input);
                                 throw eee;
                         }
-                        cnt27++;
+                        cnt28++;
                     } while (true);
 
 
@@ -2282,17 +2314,17 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:217:4: ^(start= VT_OR_INFIX dt1= lhs dt2= lhs )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:220:4: ^(start= VT_OR_INFIX dt1= lhs dt2= lhs )
                     {
                     start=(DroolsTree)input.LT(1);
-                    match(input,VT_OR_INFIX,FOLLOW_VT_OR_INFIX_in_lhs1078); 
+                    match(input,VT_OR_INFIX,FOLLOW_VT_OR_INFIX_in_lhs1099); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_lhs_in_lhs1082);
+                    pushFollow(FOLLOW_lhs_in_lhs1103);
                     dt1=lhs();
                     _fsp--;
 
-                    pushFollow(FOLLOW_lhs_in_lhs1086);
+                    pushFollow(FOLLOW_lhs_in_lhs1107);
                     dt2=lhs();
                     _fsp--;
 
@@ -2305,29 +2337,29 @@
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:221:4: ^(start= VT_AND_PREFIX (dt= lhs )+ )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:224:4: ^(start= VT_AND_PREFIX (dt= lhs )+ )
                     {
                     start=(DroolsTree)input.LT(1);
-                    match(input,VT_AND_PREFIX,FOLLOW_VT_AND_PREFIX_in_lhs1098); 
+                    match(input,VT_AND_PREFIX,FOLLOW_VT_AND_PREFIX_in_lhs1119); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:221:26: (dt= lhs )+
-                    int cnt28=0;
-                    loop28:
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:224:26: (dt= lhs )+
+                    int cnt29=0;
+                    loop29:
                     do {
-                        int alt28=2;
-                        int LA28_0 = input.LA(1);
+                        int alt29=2;
+                        int LA29_0 = input.LA(1);
 
-                        if ( ((LA28_0>=VT_AND_PREFIX && LA28_0<=VT_OR_INFIX)||LA28_0==VT_PATTERN||LA28_0==VK_EVAL||LA28_0==VK_NOT||(LA28_0>=VK_EXISTS && LA28_0<=VK_FORALL)||LA28_0==FROM) ) {
-                            alt28=1;
+                        if ( ((LA29_0>=VT_AND_PREFIX && LA29_0<=VT_OR_INFIX)||LA29_0==VT_PATTERN||LA29_0==VK_EVAL||LA29_0==VK_NOT||(LA29_0>=VK_EXISTS && LA29_0<=VK_FORALL)||LA29_0==FROM) ) {
+                            alt29=1;
                         }
 
 
-                        switch (alt28) {
+                        switch (alt29) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:221:27: dt= lhs
+                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:224:27: dt= lhs
                     	    {
-                    	    pushFollow(FOLLOW_lhs_in_lhs1103);
+                    	    pushFollow(FOLLOW_lhs_in_lhs1124);
                     	    dt=lhs();
                     	    _fsp--;
 
@@ -2337,12 +2369,12 @@
                     	    break;
 
                     	default :
-                    	    if ( cnt28 >= 1 ) break loop28;
+                    	    if ( cnt29 >= 1 ) break loop29;
                                 EarlyExitException eee =
-                                    new EarlyExitException(28, input);
+                                    new EarlyExitException(29, input);
                                 throw eee;
                         }
-                        cnt28++;
+                        cnt29++;
                     } while (true);
 
 
@@ -2352,17 +2384,17 @@
                     }
                     break;
                 case 4 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:223:4: ^(start= VT_AND_INFIX dt1= lhs dt2= lhs )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:226:4: ^(start= VT_AND_INFIX dt1= lhs dt2= lhs )
                     {
                     start=(DroolsTree)input.LT(1);
-                    match(input,VT_AND_INFIX,FOLLOW_VT_AND_INFIX_in_lhs1119); 
+                    match(input,VT_AND_INFIX,FOLLOW_VT_AND_INFIX_in_lhs1140); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_lhs_in_lhs1123);
+                    pushFollow(FOLLOW_lhs_in_lhs1144);
                     dt1=lhs();
                     _fsp--;
 
-                    pushFollow(FOLLOW_lhs_in_lhs1127);
+                    pushFollow(FOLLOW_lhs_in_lhs1148);
                     dt2=lhs();
                     _fsp--;
 
@@ -2375,13 +2407,13 @@
                     }
                     break;
                 case 5 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:227:4: ^(start= VK_EXISTS dt= lhs )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:230:4: ^(start= VK_EXISTS dt= lhs )
                     {
                     start=(DroolsTree)input.LT(1);
-                    match(input,VK_EXISTS,FOLLOW_VK_EXISTS_in_lhs1139); 
+                    match(input,VK_EXISTS,FOLLOW_VK_EXISTS_in_lhs1160); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_lhs_in_lhs1143);
+                    pushFollow(FOLLOW_lhs_in_lhs1164);
                     dt=lhs();
                     _fsp--;
 
@@ -2392,13 +2424,13 @@
                     }
                     break;
                 case 6 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:229:4: ^(start= VK_NOT dt= lhs )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:232:4: ^(start= VK_NOT dt= lhs )
                     {
                     start=(DroolsTree)input.LT(1);
-                    match(input,VK_NOT,FOLLOW_VK_NOT_in_lhs1155); 
+                    match(input,VK_NOT,FOLLOW_VK_NOT_in_lhs1176); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_lhs_in_lhs1159);
+                    pushFollow(FOLLOW_lhs_in_lhs1180);
                     dt=lhs();
                     _fsp--;
 
@@ -2409,14 +2441,14 @@
                     }
                     break;
                 case 7 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:231:4: ^(start= VK_EVAL pc= VT_PAREN_CHUNK )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:234:4: ^(start= VK_EVAL pc= VT_PAREN_CHUNK )
                     {
                     start=(DroolsTree)input.LT(1);
-                    match(input,VK_EVAL,FOLLOW_VK_EVAL_in_lhs1171); 
+                    match(input,VK_EVAL,FOLLOW_VK_EVAL_in_lhs1192); 
 
                     match(input, Token.DOWN, null); 
                     pc=(DroolsTree)input.LT(1);
-                    match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_lhs1175); 
+                    match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_lhs1196); 
 
                     match(input, Token.UP, null); 
                     	retval.baseDescr = factory.createEval(start, pc);	
@@ -2424,29 +2456,29 @@
                     }
                     break;
                 case 8 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:233:4: ^(start= VK_FORALL (dt= lhs )+ )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:236:4: ^(start= VK_FORALL (dt= lhs )+ )
                     {
                     start=(DroolsTree)input.LT(1);
-                    match(input,VK_FORALL,FOLLOW_VK_FORALL_in_lhs1187); 
+                    match(input,VK_FORALL,FOLLOW_VK_FORALL_in_lhs1208); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:233:22: (dt= lhs )+
-                    int cnt29=0;
-                    loop29:
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:236:22: (dt= lhs )+
+                    int cnt30=0;
+                    loop30:
                     do {
-                        int alt29=2;
-                        int LA29_0 = input.LA(1);
+                        int alt30=2;
+                        int LA30_0 = input.LA(1);
 
-                        if ( ((LA29_0>=VT_AND_PREFIX && LA29_0<=VT_OR_INFIX)||LA29_0==VT_PATTERN||LA29_0==VK_EVAL||LA29_0==VK_NOT||(LA29_0>=VK_EXISTS && LA29_0<=VK_FORALL)||LA29_0==FROM) ) {
-                            alt29=1;
+                        if ( ((LA30_0>=VT_AND_PREFIX && LA30_0<=VT_OR_INFIX)||LA30_0==VT_PATTERN||LA30_0==VK_EVAL||LA30_0==VK_NOT||(LA30_0>=VK_EXISTS && LA30_0<=VK_FORALL)||LA30_0==FROM) ) {
+                            alt30=1;
                         }
 
 
-                        switch (alt29) {
+                        switch (alt30) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:233:23: dt= lhs
+                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:236:23: dt= lhs
                     	    {
-                    	    pushFollow(FOLLOW_lhs_in_lhs1192);
+                    	    pushFollow(FOLLOW_lhs_in_lhs1213);
                     	    dt=lhs();
                     	    _fsp--;
 
@@ -2456,12 +2488,12 @@
                     	    break;
 
                     	default :
-                    	    if ( cnt29 >= 1 ) break loop29;
+                    	    if ( cnt30 >= 1 ) break loop30;
                                 EarlyExitException eee =
-                                    new EarlyExitException(29, input);
+                                    new EarlyExitException(30, input);
                                 throw eee;
                         }
-                        cnt29++;
+                        cnt30++;
                     } while (true);
 
 
@@ -2471,16 +2503,16 @@
                     }
                     break;
                 case 9 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:235:4: ^( FROM pn= lhs_pattern fe= from_elements )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:238:4: ^( FROM pn= lhs_pattern fe= from_elements )
                     {
-                    match(input,FROM,FOLLOW_FROM_in_lhs1206); 
+                    match(input,FROM,FOLLOW_FROM_in_lhs1227); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs1210);
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs1231);
                     pn=lhs_pattern();
                     _fsp--;
 
-                    pushFollow(FOLLOW_from_elements_in_lhs1214);
+                    pushFollow(FOLLOW_from_elements_in_lhs1235);
                     fe=from_elements();
                     _fsp--;
 
@@ -2491,9 +2523,9 @@
                     }
                     break;
                 case 10 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:237:4: pn= lhs_pattern
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:240:4: pn= lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs1225);
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs1246);
                     pn=lhs_pattern();
                     _fsp--;
 
@@ -2519,7 +2551,7 @@
     };
 
     // $ANTLR start from_elements
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:241:1: from_elements returns [PatternSourceDescr patternSourceDescr] : ( ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] ) | ^(start= COLLECT dt= lhs ) | ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID ) | fs= from_source_clause );
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:244:1: from_elements returns [PatternSourceDescr patternSourceDescr] : ( ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] ) | ^(start= COLLECT dt= lhs ) | ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID ) | fs= from_source_clause );
     public final from_elements_return from_elements() throws RecognitionException {
         from_elements_return retval = new from_elements_return();
         retval.start = input.LT(1);
@@ -2534,50 +2566,50 @@
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:242:2: ( ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] ) | ^(start= COLLECT dt= lhs ) | ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID ) | fs= from_source_clause )
-            int alt31=4;
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:245:2: ( ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] ) | ^(start= COLLECT dt= lhs ) | ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID ) | fs= from_source_clause )
+            int alt32=4;
             switch ( input.LA(1) ) {
             case ACCUMULATE:
                 {
-                alt31=1;
+                alt32=1;
                 }
                 break;
             case COLLECT:
                 {
-                alt31=2;
+                alt32=2;
                 }
                 break;
             case VK_ENTRY_POINT:
                 {
-                alt31=3;
+                alt32=3;
                 }
                 break;
             case VT_FROM_SOURCE:
                 {
-                alt31=4;
+                alt32=4;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("241:1: from_elements returns [PatternSourceDescr patternSourceDescr] : ( ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] ) | ^(start= COLLECT dt= lhs ) | ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID ) | fs= from_source_clause );", 31, 0, input);
+                    new NoViableAltException("244:1: from_elements returns [PatternSourceDescr patternSourceDescr] : ( ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] ) | ^(start= COLLECT dt= lhs ) | ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID ) | fs= from_source_clause );", 32, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt31) {
+            switch (alt32) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:242:4: ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:245:4: ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] )
                     {
                     start=(DroolsTree)input.LT(1);
-                    match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_from_elements1246); 
+                    match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_from_elements1267); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_lhs_in_from_elements1250);
+                    pushFollow(FOLLOW_lhs_in_from_elements1271);
                     dt=lhs();
                     _fsp--;
 
                     	retval.patternSourceDescr = factory.createAccumulate(start, dt.baseDescr);	
-                    pushFollow(FOLLOW_accumulate_parts_in_from_elements1260);
+                    pushFollow(FOLLOW_accumulate_parts_in_from_elements1281);
                     ret=accumulate_parts(retval.patternSourceDescr);
                     _fsp--;
 
@@ -2588,13 +2620,13 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:246:4: ^(start= COLLECT dt= lhs )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:249:4: ^(start= COLLECT dt= lhs )
                     {
                     start=(DroolsTree)input.LT(1);
-                    match(input,COLLECT,FOLLOW_COLLECT_in_from_elements1273); 
+                    match(input,COLLECT,FOLLOW_COLLECT_in_from_elements1294); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_lhs_in_from_elements1277);
+                    pushFollow(FOLLOW_lhs_in_from_elements1298);
                     dt=lhs();
                     _fsp--;
 
@@ -2605,14 +2637,14 @@
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:248:4: ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:251:4: ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID )
                     {
                     start=(DroolsTree)input.LT(1);
-                    match(input,VK_ENTRY_POINT,FOLLOW_VK_ENTRY_POINT_in_from_elements1289); 
+                    match(input,VK_ENTRY_POINT,FOLLOW_VK_ENTRY_POINT_in_from_elements1310); 
 
                     match(input, Token.DOWN, null); 
                     entryId=(DroolsTree)input.LT(1);
-                    match(input,VT_ENTRYPOINT_ID,FOLLOW_VT_ENTRYPOINT_ID_in_from_elements1293); 
+                    match(input,VT_ENTRYPOINT_ID,FOLLOW_VT_ENTRYPOINT_ID_in_from_elements1314); 
 
                     match(input, Token.UP, null); 
                     	retval.patternSourceDescr = factory.createEntryPoint(start, entryId);	
@@ -2620,9 +2652,9 @@
                     }
                     break;
                 case 4 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:250:4: fs= from_source_clause
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:253:4: fs= from_source_clause
                     {
-                    pushFollow(FOLLOW_from_source_clause_in_from_elements1304);
+                    pushFollow(FOLLOW_from_source_clause_in_from_elements1325);
                     fs=from_source_clause();
                     _fsp--;
 
@@ -2645,7 +2677,7 @@
 
 
     // $ANTLR start accumulate_parts
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:254:1: accumulate_parts[PatternSourceDescr patternSourceDescr] returns [AccumulateDescr accumulateDescr] : (ac1= accumulate_init_clause[$patternSourceDescr] | ac2= accumulate_id_clause[$patternSourceDescr] );
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:257:1: accumulate_parts[PatternSourceDescr patternSourceDescr] returns [AccumulateDescr accumulateDescr] : (ac1= accumulate_init_clause[$patternSourceDescr] | ac2= accumulate_id_clause[$patternSourceDescr] );
     public final AccumulateDescr accumulate_parts(PatternSourceDescr patternSourceDescr) throws RecognitionException {
         AccumulateDescr accumulateDescr = null;
 
@@ -2655,27 +2687,27 @@
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:255:2: (ac1= accumulate_init_clause[$patternSourceDescr] | ac2= accumulate_id_clause[$patternSourceDescr] )
-            int alt32=2;
-            int LA32_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:258:2: (ac1= accumulate_init_clause[$patternSourceDescr] | ac2= accumulate_id_clause[$patternSourceDescr] )
+            int alt33=2;
+            int LA33_0 = input.LA(1);
 
-            if ( (LA32_0==VT_ACCUMULATE_INIT_CLAUSE) ) {
-                alt32=1;
+            if ( (LA33_0==VT_ACCUMULATE_INIT_CLAUSE) ) {
+                alt33=1;
             }
-            else if ( (LA32_0==VT_ACCUMULATE_ID_CLAUSE) ) {
-                alt32=2;
+            else if ( (LA33_0==VT_ACCUMULATE_ID_CLAUSE) ) {
+                alt33=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("254:1: accumulate_parts[PatternSourceDescr patternSourceDescr] returns [AccumulateDescr accumulateDescr] : (ac1= accumulate_init_clause[$patternSourceDescr] | ac2= accumulate_id_clause[$patternSourceDescr] );", 32, 0, input);
+                    new NoViableAltException("257:1: accumulate_parts[PatternSourceDescr patternSourceDescr] returns [AccumulateDescr accumulateDescr] : (ac1= accumulate_init_clause[$patternSourceDescr] | ac2= accumulate_id_clause[$patternSourceDescr] );", 33, 0, input);
 
                 throw nvae;
             }
-            switch (alt32) {
+            switch (alt33) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:255:4: ac1= accumulate_init_clause[$patternSourceDescr]
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:258:4: ac1= accumulate_init_clause[$patternSourceDescr]
                     {
-                    pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_parts1325);
+                    pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_parts1346);
                     ac1=accumulate_init_clause(patternSourceDescr);
                     _fsp--;
 
@@ -2684,9 +2716,9 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:257:4: ac2= accumulate_id_clause[$patternSourceDescr]
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:260:4: ac2= accumulate_id_clause[$patternSourceDescr]
                     {
-                    pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_parts1336);
+                    pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_parts1357);
                     ac2=accumulate_id_clause(patternSourceDescr);
                     _fsp--;
 
@@ -2712,7 +2744,7 @@
     };
 
     // $ANTLR start accumulate_init_clause
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:261:1: accumulate_init_clause[PatternSourceDescr accumulateParam] returns [AccumulateDescr accumulateDescr] : ^( VT_ACCUMULATE_INIT_CLAUSE ^(start= INIT pc1= VT_PAREN_CHUNK ) ^( VK_ACTION pc2= VT_PAREN_CHUNK ) (rev= accumulate_init_reverse_clause )? ^( VK_RESULT pc3= VT_PAREN_CHUNK ) ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:264:1: accumulate_init_clause[PatternSourceDescr accumulateParam] returns [AccumulateDescr accumulateDescr] : ^( VT_ACCUMULATE_INIT_CLAUSE ^(start= INIT pc1= VT_PAREN_CHUNK ) ^( VK_ACTION pc2= VT_PAREN_CHUNK ) (rev= accumulate_init_reverse_clause )? ^( VK_RESULT pc3= VT_PAREN_CHUNK ) ) ;
     public final accumulate_init_clause_return accumulate_init_clause(PatternSourceDescr accumulateParam) throws RecognitionException {
         accumulate_init_clause_return retval = new accumulate_init_clause_return();
         retval.start = input.LT(1);
@@ -2725,39 +2757,39 @@
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:262:2: ( ^( VT_ACCUMULATE_INIT_CLAUSE ^(start= INIT pc1= VT_PAREN_CHUNK ) ^( VK_ACTION pc2= VT_PAREN_CHUNK ) (rev= accumulate_init_reverse_clause )? ^( VK_RESULT pc3= VT_PAREN_CHUNK ) ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:262:4: ^( VT_ACCUMULATE_INIT_CLAUSE ^(start= INIT pc1= VT_PAREN_CHUNK ) ^( VK_ACTION pc2= VT_PAREN_CHUNK ) (rev= accumulate_init_reverse_clause )? ^( VK_RESULT pc3= VT_PAREN_CHUNK ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:265:2: ( ^( VT_ACCUMULATE_INIT_CLAUSE ^(start= INIT pc1= VT_PAREN_CHUNK ) ^( VK_ACTION pc2= VT_PAREN_CHUNK ) (rev= accumulate_init_reverse_clause )? ^( VK_RESULT pc3= VT_PAREN_CHUNK ) ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:265:4: ^( VT_ACCUMULATE_INIT_CLAUSE ^(start= INIT pc1= VT_PAREN_CHUNK ) ^( VK_ACTION pc2= VT_PAREN_CHUNK ) (rev= accumulate_init_reverse_clause )? ^( VK_RESULT pc3= VT_PAREN_CHUNK ) )
             {
-            match(input,VT_ACCUMULATE_INIT_CLAUSE,FOLLOW_VT_ACCUMULATE_INIT_CLAUSE_in_accumulate_init_clause1359); 
+            match(input,VT_ACCUMULATE_INIT_CLAUSE,FOLLOW_VT_ACCUMULATE_INIT_CLAUSE_in_accumulate_init_clause1380); 
 
             match(input, Token.DOWN, null); 
             start=(DroolsTree)input.LT(1);
-            match(input,INIT,FOLLOW_INIT_in_accumulate_init_clause1368); 
+            match(input,INIT,FOLLOW_INIT_in_accumulate_init_clause1389); 
 
             match(input, Token.DOWN, null); 
             pc1=(DroolsTree)input.LT(1);
-            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1372); 
+            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1393); 
 
             match(input, Token.UP, null); 
-            match(input,VK_ACTION,FOLLOW_VK_ACTION_in_accumulate_init_clause1380); 
+            match(input,VK_ACTION,FOLLOW_VK_ACTION_in_accumulate_init_clause1401); 
 
             match(input, Token.DOWN, null); 
             pc2=(DroolsTree)input.LT(1);
-            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1384); 
+            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1405); 
 
             match(input, Token.UP, null); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:265:7: (rev= accumulate_init_reverse_clause )?
-            int alt33=2;
-            int LA33_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:268:7: (rev= accumulate_init_reverse_clause )?
+            int alt34=2;
+            int LA34_0 = input.LA(1);
 
-            if ( (LA33_0==VK_REVERSE) ) {
-                alt33=1;
+            if ( (LA34_0==VK_REVERSE) ) {
+                alt34=1;
             }
-            switch (alt33) {
+            switch (alt34) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:265:7: rev= accumulate_init_reverse_clause
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:268:7: rev= accumulate_init_reverse_clause
                     {
-                    pushFollow(FOLLOW_accumulate_init_reverse_clause_in_accumulate_init_clause1393);
+                    pushFollow(FOLLOW_accumulate_init_reverse_clause_in_accumulate_init_clause1414);
                     rev=accumulate_init_reverse_clause();
                     _fsp--;
 
@@ -2767,11 +2799,11 @@
 
             }
 
-            match(input,VK_RESULT,FOLLOW_VK_RESULT_in_accumulate_init_clause1400); 
+            match(input,VK_RESULT,FOLLOW_VK_RESULT_in_accumulate_init_clause1421); 
 
             match(input, Token.DOWN, null); 
             pc3=(DroolsTree)input.LT(1);
-            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1404); 
+            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1425); 
 
             match(input, Token.UP, null); 
 
@@ -2801,7 +2833,7 @@
     };
 
     // $ANTLR start accumulate_init_reverse_clause
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:274:1: accumulate_init_reverse_clause returns [DroolsTree vkReverse, DroolsTree vkReverseChunk] : ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:277:1: accumulate_init_reverse_clause returns [DroolsTree vkReverse, DroolsTree vkReverseChunk] : ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK ) ;
     public final accumulate_init_reverse_clause_return accumulate_init_reverse_clause() throws RecognitionException {
         accumulate_init_reverse_clause_return retval = new accumulate_init_reverse_clause_return();
         retval.start = input.LT(1);
@@ -2810,15 +2842,15 @@
         DroolsTree pc=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:275:2: ( ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:275:4: ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:278:2: ( ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:278:4: ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK )
             {
             vk=(DroolsTree)input.LT(1);
-            match(input,VK_REVERSE,FOLLOW_VK_REVERSE_in_accumulate_init_reverse_clause1427); 
+            match(input,VK_REVERSE,FOLLOW_VK_REVERSE_in_accumulate_init_reverse_clause1448); 
 
             match(input, Token.DOWN, null); 
             pc=(DroolsTree)input.LT(1);
-            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_reverse_clause1431); 
+            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_reverse_clause1452); 
 
             match(input, Token.UP, null); 
             	retval.vkReverse = vk;
@@ -2839,7 +2871,7 @@
 
 
     // $ANTLR start accumulate_id_clause
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:280:1: accumulate_id_clause[PatternSourceDescr accumulateParam] returns [AccumulateDescr accumulateDescr] : ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:283:1: accumulate_id_clause[PatternSourceDescr accumulateParam] returns [AccumulateDescr accumulateDescr] : ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK ) ;
     public final AccumulateDescr accumulate_id_clause(PatternSourceDescr accumulateParam) throws RecognitionException {
         AccumulateDescr accumulateDescr = null;
 
@@ -2847,16 +2879,16 @@
         DroolsTree pc=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:281:2: ( ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:281:4: ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:284:2: ( ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:284:4: ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK )
             {
-            match(input,VT_ACCUMULATE_ID_CLAUSE,FOLLOW_VT_ACCUMULATE_ID_CLAUSE_in_accumulate_id_clause1453); 
+            match(input,VT_ACCUMULATE_ID_CLAUSE,FOLLOW_VT_ACCUMULATE_ID_CLAUSE_in_accumulate_id_clause1474); 
 
             match(input, Token.DOWN, null); 
             id=(DroolsTree)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_accumulate_id_clause1457); 
+            match(input,ID,FOLLOW_ID_in_accumulate_id_clause1478); 
             pc=(DroolsTree)input.LT(1);
-            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_id_clause1461); 
+            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_id_clause1482); 
 
             match(input, Token.UP, null); 
             	accumulateDescr = factory.setupAccumulateId(accumulateParam, id, pc);	
@@ -2885,7 +2917,7 @@
     };
 
     // $ANTLR start from_source_clause
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:285:1: from_source_clause returns [FromDescr fromDescr, AccessorDescr retAccessorDescr] : ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:288:1: from_source_clause returns [FromDescr fromDescr, AccessorDescr retAccessorDescr] : ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) ;
     public final from_source_clause_return from_source_clause() throws RecognitionException {
         from_source_clause_stack.push(new from_source_clause_scope());
         from_source_clause_return retval = new from_source_clause_return();
@@ -2895,27 +2927,27 @@
         DroolsTree pc=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:288:3: ( ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:288:5: ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:291:3: ( ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:291:5: ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? )
             {
-            match(input,VT_FROM_SOURCE,FOLLOW_VT_FROM_SOURCE_in_from_source_clause1483); 
+            match(input,VT_FROM_SOURCE,FOLLOW_VT_FROM_SOURCE_in_from_source_clause1504); 
 
             match(input, Token.DOWN, null); 
             id=(DroolsTree)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_from_source_clause1487); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:288:30: (pc= VT_PAREN_CHUNK )?
-            int alt34=2;
-            int LA34_0 = input.LA(1);
+            match(input,ID,FOLLOW_ID_in_from_source_clause1508); 
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:291:30: (pc= VT_PAREN_CHUNK )?
+            int alt35=2;
+            int LA35_0 = input.LA(1);
 
-            if ( (LA34_0==VT_PAREN_CHUNK) ) {
-                alt34=1;
+            if ( (LA35_0==VT_PAREN_CHUNK) ) {
+                alt35=1;
             }
-            switch (alt34) {
+            switch (alt35) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:288:30: pc= VT_PAREN_CHUNK
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:291:30: pc= VT_PAREN_CHUNK
                     {
                     pc=(DroolsTree)input.LT(1);
-                    match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_from_source_clause1491); 
+                    match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_from_source_clause1512); 
 
                     }
                     break;
@@ -2924,18 +2956,18 @@
 
             	((from_source_clause_scope)from_source_clause_stack.peek()).accessorDescr = factory.createAccessor(id, pc);	
             		retval.retAccessorDescr = ((from_source_clause_scope)from_source_clause_stack.peek()).accessorDescr;	
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:291:3: ( expression_chain )?
-            int alt35=2;
-            int LA35_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:294:3: ( expression_chain )?
+            int alt36=2;
+            int LA36_0 = input.LA(1);
 
-            if ( (LA35_0==VT_EXPRESSION_CHAIN) ) {
-                alt35=1;
+            if ( (LA36_0==VT_EXPRESSION_CHAIN) ) {
+                alt36=1;
             }
-            switch (alt35) {
+            switch (alt36) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:291:3: expression_chain
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:294:3: expression_chain
                     {
-                    pushFollow(FOLLOW_expression_chain_in_from_source_clause1500);
+                    pushFollow(FOLLOW_expression_chain_in_from_source_clause1521);
                     expression_chain();
                     _fsp--;
 
@@ -2967,7 +2999,7 @@
     };
 
     // $ANTLR start expression_chain
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:295:1: expression_chain : ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:298:1: expression_chain : ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) ;
     public final expression_chain_return expression_chain() throws RecognitionException {
         expression_chain_return retval = new expression_chain_return();
         retval.start = input.LT(1);
@@ -2978,47 +3010,47 @@
         DroolsTree pc=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:296:2: ( ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:296:4: ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:299:2: ( ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:299:4: ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? )
             {
             start=(DroolsTree)input.LT(1);
-            match(input,VT_EXPRESSION_CHAIN,FOLLOW_VT_EXPRESSION_CHAIN_in_expression_chain1519); 
+            match(input,VT_EXPRESSION_CHAIN,FOLLOW_VT_EXPRESSION_CHAIN_in_expression_chain1540); 
 
             match(input, Token.DOWN, null); 
             id=(DroolsTree)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_expression_chain1523); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:296:40: (sc= VT_SQUARE_CHUNK )?
-            int alt36=2;
-            int LA36_0 = input.LA(1);
+            match(input,ID,FOLLOW_ID_in_expression_chain1544); 
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:299:40: (sc= VT_SQUARE_CHUNK )?
+            int alt37=2;
+            int LA37_0 = input.LA(1);
 
-            if ( (LA36_0==VT_SQUARE_CHUNK) ) {
-                alt36=1;
+            if ( (LA37_0==VT_SQUARE_CHUNK) ) {
+                alt37=1;
             }
-            switch (alt36) {
+            switch (alt37) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:296:40: sc= VT_SQUARE_CHUNK
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:299:40: sc= VT_SQUARE_CHUNK
                     {
                     sc=(DroolsTree)input.LT(1);
-                    match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_expression_chain1527); 
+                    match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_expression_chain1548); 
 
                     }
                     break;
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:296:60: (pc= VT_PAREN_CHUNK )?
-            int alt37=2;
-            int LA37_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:299:60: (pc= VT_PAREN_CHUNK )?
+            int alt38=2;
+            int LA38_0 = input.LA(1);
 
-            if ( (LA37_0==VT_PAREN_CHUNK) ) {
-                alt37=1;
+            if ( (LA38_0==VT_PAREN_CHUNK) ) {
+                alt38=1;
             }
-            switch (alt37) {
+            switch (alt38) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:296:60: pc= VT_PAREN_CHUNK
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:299:60: pc= VT_PAREN_CHUNK
                     {
                     pc=(DroolsTree)input.LT(1);
-                    match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_expression_chain1532); 
+                    match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_expression_chain1553); 
 
                     }
                     break;
@@ -3027,18 +3059,18 @@
 
             	DeclarativeInvokerDescr declarativeInvokerResult = factory.createExpressionChain(start, id, sc, pc);	
             		((from_source_clause_scope)from_source_clause_stack.peek()).accessorDescr.addInvoker(declarativeInvokerResult);	
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:299:3: ( expression_chain )?
-            int alt38=2;
-            int LA38_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:302:3: ( expression_chain )?
+            int alt39=2;
+            int LA39_0 = input.LA(1);
 
-            if ( (LA38_0==VT_EXPRESSION_CHAIN) ) {
-                alt38=1;
+            if ( (LA39_0==VT_EXPRESSION_CHAIN) ) {
+                alt39=1;
             }
-            switch (alt38) {
+            switch (alt39) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:299:3: expression_chain
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:302:3: expression_chain
                     {
-                    pushFollow(FOLLOW_expression_chain_in_expression_chain1540);
+                    pushFollow(FOLLOW_expression_chain_in_expression_chain1561);
                     expression_chain();
                     _fsp--;
 
@@ -3066,7 +3098,7 @@
 
 
     // $ANTLR start lhs_pattern
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:302:1: lhs_pattern returns [BaseDescr baseDescr] : ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )? ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:305:1: lhs_pattern returns [BaseDescr baseDescr] : ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )? ;
     public final BaseDescr lhs_pattern() throws RecognitionException {
         BaseDescr baseDescr = null;
 
@@ -3076,30 +3108,30 @@
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:303:2: ( ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )? )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:303:4: ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )?
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:306:2: ( ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )? )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:306:4: ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )?
             {
-            match(input,VT_PATTERN,FOLLOW_VT_PATTERN_in_lhs_pattern1558); 
+            match(input,VT_PATTERN,FOLLOW_VT_PATTERN_in_lhs_pattern1579); 
 
             match(input, Token.DOWN, null); 
-            pushFollow(FOLLOW_fact_expression_in_lhs_pattern1562);
+            pushFollow(FOLLOW_fact_expression_in_lhs_pattern1583);
             fe=fact_expression();
             _fsp--;
 
 
             match(input, Token.UP, null); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:303:39: (oc= over_clause )?
-            int alt39=2;
-            int LA39_0 = input.LA(1);
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:306:39: (oc= over_clause )?
+            int alt40=2;
+            int LA40_0 = input.LA(1);
 
-            if ( (LA39_0==OVER) ) {
-                alt39=1;
+            if ( (LA40_0==OVER) ) {
+                alt40=1;
             }
-            switch (alt39) {
+            switch (alt40) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:303:39: oc= over_clause
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:306:39: oc= over_clause
                     {
-                    pushFollow(FOLLOW_over_clause_in_lhs_pattern1567);
+                    pushFollow(FOLLOW_over_clause_in_lhs_pattern1588);
                     oc=over_clause();
                     _fsp--;
 
@@ -3126,7 +3158,7 @@
 
 
     // $ANTLR start over_clause
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:307:1: over_clause returns [List behaviorList] : ^( OVER (oe= over_element )+ ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:310:1: over_clause returns [List behaviorList] : ^( OVER (oe= over_element )+ ) ;
     public final List over_clause() throws RecognitionException {
         List behaviorList = null;
 
@@ -3135,29 +3167,29 @@
 
         behaviorList = new LinkedList();
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:309:2: ( ^( OVER (oe= over_element )+ ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:309:4: ^( OVER (oe= over_element )+ )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:312:2: ( ^( OVER (oe= over_element )+ ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:312:4: ^( OVER (oe= over_element )+ )
             {
-            match(input,OVER,FOLLOW_OVER_in_over_clause1592); 
+            match(input,OVER,FOLLOW_OVER_in_over_clause1613); 
 
             match(input, Token.DOWN, null); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:309:11: (oe= over_element )+
-            int cnt40=0;
-            loop40:
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:312:11: (oe= over_element )+
+            int cnt41=0;
+            loop41:
             do {
-                int alt40=2;
-                int LA40_0 = input.LA(1);
+                int alt41=2;
+                int LA41_0 = input.LA(1);
 
-                if ( (LA40_0==VT_BEHAVIOR) ) {
-                    alt40=1;
+                if ( (LA41_0==VT_BEHAVIOR) ) {
+                    alt41=1;
                 }
 
 
-                switch (alt40) {
+                switch (alt41) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:309:12: oe= over_element
+            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:312:12: oe= over_element
             	    {
-            	    pushFollow(FOLLOW_over_element_in_over_clause1597);
+            	    pushFollow(FOLLOW_over_element_in_over_clause1618);
             	    oe=over_element();
             	    _fsp--;
 
@@ -3167,12 +3199,12 @@
             	    break;
 
             	default :
-            	    if ( cnt40 >= 1 ) break loop40;
+            	    if ( cnt41 >= 1 ) break loop41;
                         EarlyExitException eee =
-                            new EarlyExitException(40, input);
+                            new EarlyExitException(41, input);
                         throw eee;
                 }
-                cnt40++;
+                cnt41++;
             } while (true);
 
 
@@ -3193,7 +3225,7 @@
 
 
     // $ANTLR start over_element
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:312:1: over_element returns [BehaviorDescr behavior] : ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:315:1: over_element returns [BehaviorDescr behavior] : ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK ) ;
     public final BehaviorDescr over_element() throws RecognitionException {
         BehaviorDescr behavior = null;
 
@@ -3201,17 +3233,17 @@
         DroolsTree pc=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:313:2: ( ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:313:4: ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:316:2: ( ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:316:4: ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK )
             {
-            match(input,VT_BEHAVIOR,FOLLOW_VT_BEHAVIOR_in_over_element1618); 
+            match(input,VT_BEHAVIOR,FOLLOW_VT_BEHAVIOR_in_over_element1639); 
 
             match(input, Token.DOWN, null); 
-            match(input,ID,FOLLOW_ID_in_over_element1620); 
+            match(input,ID,FOLLOW_ID_in_over_element1641); 
             id2=(DroolsTree)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_over_element1624); 
+            match(input,ID,FOLLOW_ID_in_over_element1645); 
             pc=(DroolsTree)input.LT(1);
-            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_over_element1628); 
+            match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_over_element1649); 
 
             match(input, Token.UP, null); 
             	behavior = factory.createBehavior(id2,pc);	
@@ -3234,7 +3266,7 @@
     };
 
     // $ANTLR start fact_expression
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:317:1: fact_expression returns [BaseDescr descr] : ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_CONTAINS (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_EXCLUDES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_SOUNDSLIKE (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_M!
 EMBEROF (not= VK_NOT )? fe= fact_expression ) | ^(op= ID (not= VK_NOT )? (param= VT_SQUARE_CHUNK )? fe= fact_expression ) | ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ ) | ^( DOUBLE_PIPE left= fact_expression right= fact_expression ) | ^( DOUBLE_AMPER left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK );
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:320:1: fact_expression returns [BaseDescr descr] : ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_CONTAINS (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_EXCLUDES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_SOUNDSLIKE (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MEMBEROF (not= VK_NOT )? fe= fact_expression ) | ^(op= ID (n!
 ot= VK_NOT )? (param= VT_SQUARE_CHUNK )? fe= fact_expression ) | ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ ) | ^( DOUBLE_PIPE left= fact_expression right= fact_expression ) | ^( DOUBLE_AMPER left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK );
     public final fact_expression_return fact_expression() throws RecognitionException {
         fact_expression_return retval = new fact_expression_return();
         retval.start = input.LT(1);
@@ -3269,183 +3301,183 @@
         	List<BaseDescr> exprList = new LinkedList<BaseDescr>();
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:320:3: ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_CONTAINS (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_EXCLUDES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_SOUNDSLIKE (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MEMBEROF (not= VK_NOT )? fe= fact_exp!
 ression ) | ^(op= ID (not= VK_NOT )? (param= VT_SQUARE_CHUNK )? fe= fact_expression ) | ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ ) | ^( DOUBLE_PIPE left= fact_expression right= fact_expression ) | ^( DOUBLE_AMPER left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK )
-            int alt53=28;
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:323:3: ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_CONTAINS (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_EXCLUDES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_SOUNDSLIKE (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MEMBEROF (not= VK_NOT )? fe= fact_expression ) | ^(op= ID (not= VK_NOT )? (param= VT_SQUARE_CHUN!
 K )? fe= fact_expression ) | ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ ) | ^( DOUBLE_PIPE left= fact_expression right= fact_expression ) | ^( DOUBLE_AMPER left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK )
+            int alt54=28;
             switch ( input.LA(1) ) {
             case VT_FACT:
                 {
-                alt53=1;
+                alt54=1;
                 }
                 break;
             case VT_FACT_BINDING:
                 {
-                alt53=2;
+                alt54=2;
                 }
                 break;
             case VT_FACT_OR:
                 {
-                alt53=3;
+                alt54=3;
                 }
                 break;
             case VT_FIELD:
                 {
-                alt53=4;
+                alt54=4;
                 }
                 break;
             case VT_BIND_FIELD:
                 {
-                alt53=5;
+                alt54=5;
                 }
                 break;
             case VK_EVAL:
                 {
-                alt53=6;
+                alt54=6;
                 }
                 break;
             case EQUAL:
                 {
-                alt53=7;
+                alt54=7;
                 }
                 break;
             case NOT_EQUAL:
                 {
-                alt53=8;
+                alt54=8;
                 }
                 break;
             case GREATER:
                 {
-                alt53=9;
+                alt54=9;
                 }
                 break;
             case GREATER_EQUAL:
                 {
-                alt53=10;
+                alt54=10;
                 }
                 break;
             case LESS:
                 {
-                alt53=11;
+                alt54=11;
                 }
                 break;
             case LESS_EQUAL:
                 {
-                alt53=12;
+                alt54=12;
                 }
                 break;
             case VK_CONTAINS:
                 {
-                alt53=13;
+                alt54=13;
                 }
                 break;
             case VK_EXCLUDES:
                 {
-                alt53=14;
+                alt54=14;
                 }
                 break;
             case VK_MATCHES:
                 {
-                alt53=15;
+                alt54=15;
                 }
                 break;
             case VK_SOUNDSLIKE:
                 {
-                alt53=16;
+                alt54=16;
                 }
                 break;
             case VK_MEMBEROF:
                 {
-                alt53=17;
+                alt54=17;
                 }
                 break;
             case ID:
                 {
-                alt53=18;
+                alt54=18;
                 }
                 break;
             case VK_IN:
                 {
-                alt53=19;
+                alt54=19;
                 }
                 break;
             case DOUBLE_PIPE:
                 {
-                alt53=20;
+                alt54=20;
                 }
                 break;
             case DOUBLE_AMPER:
                 {
-                alt53=21;
+                alt54=21;
                 }
                 break;
             case VT_ACCESSOR_PATH:
                 {
-                alt53=22;
+                alt54=22;
                 }
                 break;
             case STRING:
                 {
-                alt53=23;
+                alt54=23;
                 }
                 break;
             case INT:
                 {
-                alt53=24;
+                alt54=24;
                 }
                 break;
             case FLOAT:
                 {
-                alt53=25;
+                alt54=25;
                 }
                 break;
             case BOOL:
                 {
-                alt53=26;
+                alt54=26;
                 }
                 break;
             case NULL:
                 {
-                alt53=27;
+                alt54=27;
                 }
                 break;
             case VT_PAREN_CHUNK:
                 {
-                alt53=28;
+                alt54=28;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("317:1: fact_expression returns [BaseDescr descr] : ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_CONTAINS (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_EXCLUDES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_SOUNDSLIKE (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MEMBEROF (not= VK_NOT )? fe= fact_expression ) | ^(op= ID (not= VK_NOT )? (!
 param= VT_SQUARE_CHUNK )? fe= fact_expression ) | ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ ) | ^( DOUBLE_PIPE left= fact_expression right= fact_expression ) | ^( DOUBLE_AMPER left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK );", 53, 0, input);
+                    new NoViableAltException("320:1: fact_expression returns [BaseDescr descr] : ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_CONTAINS (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_EXCLUDES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_SOUNDSLIKE (not= VK_NOT )? fe= fact_expression ) | ^(op= VK_MEMBEROF (not= VK_NOT )? fe= fact_expression ) | ^(op= ID (not= VK_NOT )? (!
 param= VT_SQUARE_CHUNK )? fe= fact_expression ) | ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ ) | ^( DOUBLE_PIPE left= fact_expression right= fact_expression ) | ^( DOUBLE_AMPER left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK );", 54, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt53) {
+            switch (alt54) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:320:5: ^( VT_FACT pt= pattern_type (fe= fact_expression )* )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:323:5: ^( VT_FACT pt= pattern_type (fe= fact_expression )* )
                     {
-                    match(input,VT_FACT,FOLLOW_VT_FACT_in_fact_expression1651); 
+                    match(input,VT_FACT,FOLLOW_VT_FACT_in_fact_expression1672); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_pattern_type_in_fact_expression1655);
+                    pushFollow(FOLLOW_pattern_type_in_fact_expression1676);
                     pt=pattern_type();
                     _fsp--;
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:320:31: (fe= fact_expression )*
-                    loop41:
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:323:31: (fe= fact_expression )*
+                    loop42:
                     do {
-                        int alt41=2;
-                        int LA41_0 = input.LA(1);
+                        int alt42=2;
+                        int LA42_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<=NOT_EQUAL)||(LA41_0>=FLOAT && LA41_0<=NULL)) ) {
-                            alt41=1;
+                        if ( (LA42_0==VT_FACT||LA42_0==VT_PAREN_CHUNK||(LA42_0>=VT_FACT_BINDING && LA42_0<=VT_ACCESSOR_PATH)||(LA42_0>=VK_EVAL && LA42_0<=VK_MEMBEROF)||LA42_0==VK_IN||LA42_0==ID||LA42_0==STRING||(LA42_0>=BOOL && LA42_0<=DOUBLE_AMPER)||(LA42_0>=EQUAL && LA42_0<=NOT_EQUAL)||(LA42_0>=FLOAT && LA42_0<=NULL)) ) {
+                            alt42=1;
                         }
 
 
-                        switch (alt41) {
+                        switch (alt42) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:320:32: fe= fact_expression
+                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:323:32: fe= fact_expression
                     	    {
-                    	    pushFollow(FOLLOW_fact_expression_in_fact_expression1660);
+                    	    pushFollow(FOLLOW_fact_expression_in_fact_expression1681);
                     	    fe=fact_expression();
                     	    _fsp--;
 
@@ -3455,7 +3487,7 @@
                     	    break;
 
                     	default :
-                    	    break loop41;
+                    	    break loop42;
                         }
                     } while (true);
 
@@ -3466,14 +3498,14 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:322:4: ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:325:4: ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression )
                     {
-                    match(input,VT_FACT_BINDING,FOLLOW_VT_FACT_BINDING_in_fact_expression1674); 
+                    match(input,VT_FACT_BINDING,FOLLOW_VT_FACT_BINDING_in_fact_expression1695); 
 
                     match(input, Token.DOWN, null); 
                     label=(DroolsTree)input.LT(1);
-                    match(input,VT_LABEL,FOLLOW_VT_LABEL_in_fact_expression1678); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1682);
+                    match(input,VT_LABEL,FOLLOW_VT_LABEL_in_fact_expression1699); 
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression1703);
                     fact=fact_expression();
                     _fsp--;
 
@@ -3484,17 +3516,17 @@
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:324:4: ^(start= VT_FACT_OR left= fact_expression right= fact_expression )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:327:4: ^(start= VT_FACT_OR left= fact_expression right= fact_expression )
                     {
                     start=(DroolsTree)input.LT(1);
-                    match(input,VT_FACT_OR,FOLLOW_VT_FACT_OR_in_fact_expression1694); 
+                    match(input,VT_FACT_OR,FOLLOW_VT_FACT_OR_in_fact_expression1715); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1698);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression1719);
                     left=fact_expression();
                     _fsp--;
 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1702);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression1723);
                     right=fact_expression();
                     _fsp--;
 
@@ -3505,27 +3537,27 @@
                     }
                     break;
                 case 4 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:327:4: ^( VT_FIELD field= field_element (fe= fact_expression )? )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:330:4: ^( VT_FIELD field= field_element (fe= fact_expression )? )
                     {
-                    match(input,VT_FIELD,FOLLOW_VT_FIELD_in_fact_expression1713); 
+                    match(input,VT_FIELD,FOLLOW_VT_FIELD_in_fact_expression1734); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_field_element_in_fact_expression1717);
+                    pushFollow(FOLLOW_field_element_in_fact_expression1738);
                     field=field_element();
                     _fsp--;
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:327:37: (fe= fact_expression )?
-                    int alt42=2;
-                    int LA42_0 = input.LA(1);
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:330:37: (fe= fact_expression )?
+                    int alt43=2;
+                    int LA43_0 = input.LA(1);
 
-                    if ( (LA42_0==VT_FACT||LA42_0==VT_PAREN_CHUNK||(LA42_0>=VT_FACT_BINDING && LA42_0<=VT_ACCESSOR_PATH)||(LA42_0>=VK_EVAL && LA42_0<=VK_MEMBEROF)||LA42_0==VK_IN||LA42_0==ID||LA42_0==STRING||(LA42_0>=BOOL && LA42_0<=DOUBLE_AMPER)||(LA42_0>=EQUAL && LA42_0<=NOT_EQUAL)||(LA42_0>=FLOAT && LA42_0<=NULL)) ) {
-                        alt42=1;
+                    if ( (LA43_0==VT_FACT||LA43_0==VT_PAREN_CHUNK||(LA43_0>=VT_FACT_BINDING && LA43_0<=VT_ACCESSOR_PATH)||(LA43_0>=VK_EVAL && LA43_0<=VK_MEMBEROF)||LA43_0==VK_IN||LA43_0==ID||LA43_0==STRING||(LA43_0>=BOOL && LA43_0<=DOUBLE_AMPER)||(LA43_0>=EQUAL && LA43_0<=NOT_EQUAL)||(LA43_0>=FLOAT && LA43_0<=NULL)) ) {
+                        alt43=1;
                     }
-                    switch (alt42) {
+                    switch (alt43) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:327:37: fe= fact_expression
+                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:330:37: fe= fact_expression
                             {
-                            pushFollow(FOLLOW_fact_expression_in_fact_expression1721);
+                            pushFollow(FOLLOW_fact_expression_in_fact_expression1742);
                             fe=fact_expression();
                             _fsp--;
 
@@ -3546,14 +3578,14 @@
                     }
                     break;
                 case 5 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:333:4: ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:336:4: ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression )
                     {
-                    match(input,VT_BIND_FIELD,FOLLOW_VT_BIND_FIELD_in_fact_expression1732); 
+                    match(input,VT_BIND_FIELD,FOLLOW_VT_BIND_FIELD_in_fact_expression1753); 
 
                     match(input, Token.DOWN, null); 
                     label=(DroolsTree)input.LT(1);
-                    match(input,VT_LABEL,FOLLOW_VT_LABEL_in_fact_expression1736); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1740);
+                    match(input,VT_LABEL,FOLLOW_VT_LABEL_in_fact_expression1757); 
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression1761);
                     fe=fact_expression();
                     _fsp--;
 
@@ -3564,13 +3596,13 @@
                     }
                     break;
                 case 6 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:336:4: ^( VK_EVAL pc= VT_PAREN_CHUNK )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:339:4: ^( VK_EVAL pc= VT_PAREN_CHUNK )
                     {
-                    match(input,VK_EVAL,FOLLOW_VK_EVAL_in_fact_expression1751); 
+                    match(input,VK_EVAL,FOLLOW_VK_EVAL_in_fact_expression1772); 
 
                     match(input, Token.DOWN, null); 
                     pc=(DroolsTree)input.LT(1);
-                    match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_fact_expression1755); 
+                    match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_fact_expression1776); 
 
                     match(input, Token.UP, null); 
                     	retval.descr = factory.createPredicate(pc);	
@@ -3578,13 +3610,13 @@
                     }
                     break;
                 case 7 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:339:4: ^(op= EQUAL fe= fact_expression )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:342:4: ^(op= EQUAL fe= fact_expression )
                     {
                     op=(DroolsTree)input.LT(1);
-                    match(input,EQUAL,FOLLOW_EQUAL_in_fact_expression1768); 
+                    match(input,EQUAL,FOLLOW_EQUAL_in_fact_expression1789); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1772);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression1793);
                     fe=fact_expression();
                     _fsp--;
 
@@ -3595,13 +3627,13 @@
                     }
                     break;
                 case 8 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:341:4: ^(op= NOT_EQUAL fe= fact_expression )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:344:4: ^(op= NOT_EQUAL fe= fact_expression )
                     {
                     op=(DroolsTree)input.LT(1);
-                    match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_fact_expression1784); 
+                    match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_fact_expression1805); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1788);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression1809);
                     fe=fact_expression();
                     _fsp--;
 
@@ -3612,13 +3644,13 @@
                     }
                     break;
                 case 9 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:343:4: ^(op= GREATER fe= fact_expression )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:346:4: ^(op= GREATER fe= fact_expression )
                     {
                     op=(DroolsTree)input.LT(1);
-                    match(input,GREATER,FOLLOW_GREATER_in_fact_expression1800); 
+                    match(input,GREATER,FOLLOW_GREATER_in_fact_expression1821); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1804);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression1825);
                     fe=fact_expression();
                     _fsp--;
 
@@ -3629,13 +3661,13 @@
                     }
                     break;
                 case 10 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:345:4: ^(op= GREATER_EQUAL fe= fact_expression )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:348:4: ^(op= GREATER_EQUAL fe= fact_expression )
                     {
                     op=(DroolsTree)input.LT(1);
-                    match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_fact_expression1816); 
+                    match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_fact_expression1837); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1820);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression1841);
                     fe=fact_expression();
                     _fsp--;
 
@@ -3646,13 +3678,13 @@
                     }
                     break;
                 case 11 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:347:4: ^(op= LESS fe= fact_expression )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:350:4: ^(op= LESS fe= fact_expression )
                     {
                     op=(DroolsTree)input.LT(1);
-                    match(input,LESS,FOLLOW_LESS_in_fact_expression1832); 
+                    match(input,LESS,FOLLOW_LESS_in_fact_expression1853); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1836);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression1857);
                     fe=fact_expression();
                     _fsp--;
 
@@ -3663,13 +3695,13 @@
                     }
                     break;
                 case 12 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:349:4: ^(op= LESS_EQUAL fe= fact_expression )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:352:4: ^(op= LESS_EQUAL fe= fact_expression )
                     {
                     op=(DroolsTree)input.LT(1);
-                    match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_fact_expression1848); 
+                    match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_fact_expression1869); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1852);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression1873);
                     fe=fact_expression();
                     _fsp--;
 
@@ -3680,49 +3712,13 @@
                     }
                     break;
                 case 13 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:351:4: ^(op= VK_CONTAINS (not= VK_NOT )? fe= fact_expression )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:354:4: ^(op= VK_CONTAINS (not= VK_NOT )? fe= fact_expression )
                     {
                     op=(DroolsTree)input.LT(1);
-                    match(input,VK_CONTAINS,FOLLOW_VK_CONTAINS_in_fact_expression1864); 
+                    match(input,VK_CONTAINS,FOLLOW_VK_CONTAINS_in_fact_expression1885); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:351:24: (not= VK_NOT )?
-                    int alt43=2;
-                    int LA43_0 = input.LA(1);
-
-                    if ( (LA43_0==VK_NOT) ) {
-                        alt43=1;
-                    }
-                    switch (alt43) {
-                        case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:351:24: not= VK_NOT
-                            {
-                            not=(DroolsTree)input.LT(1);
-                            match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1868); 
-
-                            }
-                            break;
-
-                    }
-
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1873);
-                    fe=fact_expression();
-                    _fsp--;
-
-
-                    match(input, Token.UP, null); 
-                    	retval.descr = factory.setupRestriction(op, not, fe.descr);	
-
-                    }
-                    break;
-                case 14 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:353:4: ^(op= VK_EXCLUDES (not= VK_NOT )? fe= fact_expression )
-                    {
-                    op=(DroolsTree)input.LT(1);
-                    match(input,VK_EXCLUDES,FOLLOW_VK_EXCLUDES_in_fact_expression1885); 
-
-                    match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:353:24: (not= VK_NOT )?
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:354:24: (not= VK_NOT )?
                     int alt44=2;
                     int LA44_0 = input.LA(1);
 
@@ -3731,7 +3727,7 @@
                     }
                     switch (alt44) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:353:24: not= VK_NOT
+                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:354:24: not= VK_NOT
                             {
                             not=(DroolsTree)input.LT(1);
                             match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1889); 
@@ -3751,14 +3747,14 @@
 
                     }
                     break;
-                case 15 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:355:4: ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression )
+                case 14 :
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:356:4: ^(op= VK_EXCLUDES (not= VK_NOT )? fe= fact_expression )
                     {
                     op=(DroolsTree)input.LT(1);
-                    match(input,VK_MATCHES,FOLLOW_VK_MATCHES_in_fact_expression1906); 
+                    match(input,VK_EXCLUDES,FOLLOW_VK_EXCLUDES_in_fact_expression1906); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:355:23: (not= VK_NOT )?
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:356:24: (not= VK_NOT )?
                     int alt45=2;
                     int LA45_0 = input.LA(1);
 
@@ -3767,7 +3763,7 @@
                     }
                     switch (alt45) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:355:23: not= VK_NOT
+                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:356:24: not= VK_NOT
                             {
                             not=(DroolsTree)input.LT(1);
                             match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1910); 
@@ -3787,14 +3783,14 @@
 
                     }
                     break;
-                case 16 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:357:4: ^(op= VK_SOUNDSLIKE (not= VK_NOT )? fe= fact_expression )
+                case 15 :
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:358:4: ^(op= VK_MATCHES (not= VK_NOT )? fe= fact_expression )
                     {
                     op=(DroolsTree)input.LT(1);
-                    match(input,VK_SOUNDSLIKE,FOLLOW_VK_SOUNDSLIKE_in_fact_expression1927); 
+                    match(input,VK_MATCHES,FOLLOW_VK_MATCHES_in_fact_expression1927); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:357:26: (not= VK_NOT )?
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:358:23: (not= VK_NOT )?
                     int alt46=2;
                     int LA46_0 = input.LA(1);
 
@@ -3803,7 +3799,7 @@
                     }
                     switch (alt46) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:357:26: not= VK_NOT
+                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:358:23: not= VK_NOT
                             {
                             not=(DroolsTree)input.LT(1);
                             match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1931); 
@@ -3823,14 +3819,14 @@
 
                     }
                     break;
-                case 17 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:359:4: ^(op= VK_MEMBEROF (not= VK_NOT )? fe= fact_expression )
+                case 16 :
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:360:4: ^(op= VK_SOUNDSLIKE (not= VK_NOT )? fe= fact_expression )
                     {
                     op=(DroolsTree)input.LT(1);
-                    match(input,VK_MEMBEROF,FOLLOW_VK_MEMBEROF_in_fact_expression1948); 
+                    match(input,VK_SOUNDSLIKE,FOLLOW_VK_SOUNDSLIKE_in_fact_expression1948); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:359:24: (not= VK_NOT )?
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:360:26: (not= VK_NOT )?
                     int alt47=2;
                     int LA47_0 = input.LA(1);
 
@@ -3839,7 +3835,7 @@
                     }
                     switch (alt47) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:359:24: not= VK_NOT
+                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:360:26: not= VK_NOT
                             {
                             not=(DroolsTree)input.LT(1);
                             match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1952); 
@@ -3859,14 +3855,14 @@
 
                     }
                     break;
-                case 18 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:361:4: ^(op= ID (not= VK_NOT )? (param= VT_SQUARE_CHUNK )? fe= fact_expression )
+                case 17 :
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:362:4: ^(op= VK_MEMBEROF (not= VK_NOT )? fe= fact_expression )
                     {
                     op=(DroolsTree)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_fact_expression1969); 
+                    match(input,VK_MEMBEROF,FOLLOW_VK_MEMBEROF_in_fact_expression1969); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:361:15: (not= VK_NOT )?
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:362:24: (not= VK_NOT )?
                     int alt48=2;
                     int LA48_0 = input.LA(1);
 
@@ -3875,7 +3871,7 @@
                     }
                     switch (alt48) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:361:15: not= VK_NOT
+                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:362:24: not= VK_NOT
                             {
                             not=(DroolsTree)input.LT(1);
                             match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1973); 
@@ -3885,26 +3881,62 @@
 
                     }
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:361:29: (param= VT_SQUARE_CHUNK )?
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression1978);
+                    fe=fact_expression();
+                    _fsp--;
+
+
+                    match(input, Token.UP, null); 
+                    	retval.descr = factory.setupRestriction(op, not, fe.descr);	
+
+                    }
+                    break;
+                case 18 :
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:364:4: ^(op= ID (not= VK_NOT )? (param= VT_SQUARE_CHUNK )? fe= fact_expression )
+                    {
+                    op=(DroolsTree)input.LT(1);
+                    match(input,ID,FOLLOW_ID_in_fact_expression1990); 
+
+                    match(input, Token.DOWN, null); 
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:364:15: (not= VK_NOT )?
                     int alt49=2;
                     int LA49_0 = input.LA(1);
 
-                    if ( (LA49_0==VT_SQUARE_CHUNK) ) {
+                    if ( (LA49_0==VK_NOT) ) {
                         alt49=1;
                     }
                     switch (alt49) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:361:29: param= VT_SQUARE_CHUNK
+                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:364:15: not= VK_NOT
                             {
+                            not=(DroolsTree)input.LT(1);
+                            match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1994); 
+
+                            }
+                            break;
+
+                    }
+
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:364:29: (param= VT_SQUARE_CHUNK )?
+                    int alt50=2;
+                    int LA50_0 = input.LA(1);
+
+                    if ( (LA50_0==VT_SQUARE_CHUNK) ) {
+                        alt50=1;
+                    }
+                    switch (alt50) {
+                        case 1 :
+                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:364:29: param= VT_SQUARE_CHUNK
+                            {
                             param=(DroolsTree)input.LT(1);
-                            match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_fact_expression1978); 
+                            match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_fact_expression1999); 
 
                             }
                             break;
 
                     }
 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1983);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2004);
                     fe=fact_expression();
                     _fsp--;
 
@@ -3915,47 +3947,47 @@
                     }
                     break;
                 case 19 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:364:4: ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:367:4: ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ )
                     {
-                    match(input,VK_IN,FOLLOW_VK_IN_in_fact_expression1994); 
+                    match(input,VK_IN,FOLLOW_VK_IN_in_fact_expression2015); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:364:15: (not= VK_NOT )?
-                    int alt50=2;
-                    int LA50_0 = input.LA(1);
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:367:15: (not= VK_NOT )?
+                    int alt51=2;
+                    int LA51_0 = input.LA(1);
 
-                    if ( (LA50_0==VK_NOT) ) {
-                        alt50=1;
+                    if ( (LA51_0==VK_NOT) ) {
+                        alt51=1;
                     }
-                    switch (alt50) {
+                    switch (alt51) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:364:15: not= VK_NOT
+                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:367:15: not= VK_NOT
                             {
                             not=(DroolsTree)input.LT(1);
-                            match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1998); 
+                            match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression2019); 
 
                             }
                             break;
 
                     }
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:364:24: (fe= fact_expression )+
-                    int cnt51=0;
-                    loop51:
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:367:24: (fe= fact_expression )+
+                    int cnt52=0;
+                    loop52:
                     do {
-                        int alt51=2;
-                        int LA51_0 = input.LA(1);
+                        int alt52=2;
+                        int LA52_0 = input.LA(1);
 
-                        if ( (LA51_0==VT_FACT||LA51_0==VT_PAREN_CHUNK||(LA51_0>=VT_FACT_BINDING && LA51_0<=VT_ACCESSOR_PATH)||(LA51_0>=VK_EVAL && LA51_0<=VK_MEMBEROF)||LA51_0==VK_IN||LA51_0==ID||LA51_0==STRING||(LA51_0>=BOOL && LA51_0<=DOUBLE_AMPER)||(LA51_0>=EQUAL && LA51_0<=NOT_EQUAL)||(LA51_0>=FLOAT && LA51_0<=NULL)) ) {
-                            alt51=1;
+                        if ( (LA52_0==VT_FACT||LA52_0==VT_PAREN_CHUNK||(LA52_0>=VT_FACT_BINDING && LA52_0<=VT_ACCESSOR_PATH)||(LA52_0>=VK_EVAL && LA52_0<=VK_MEMBEROF)||LA52_0==VK_IN||LA52_0==ID||LA52_0==STRING||(LA52_0>=BOOL && LA52_0<=DOUBLE_AMPER)||(LA52_0>=EQUAL && LA52_0<=NOT_EQUAL)||(LA52_0>=FLOAT && LA52_0<=NULL)) ) {
+                            alt52=1;
                         }
 
 
-                        switch (alt51) {
+                        switch (alt52) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:364:25: fe= fact_expression
+                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:367:25: fe= fact_expression
                     	    {
-                    	    pushFollow(FOLLOW_fact_expression_in_fact_expression2004);
+                    	    pushFollow(FOLLOW_fact_expression_in_fact_expression2025);
                     	    fe=fact_expression();
                     	    _fsp--;
 
@@ -3965,12 +3997,12 @@
                     	    break;
 
                     	default :
-                    	    if ( cnt51 >= 1 ) break loop51;
+                    	    if ( cnt52 >= 1 ) break loop52;
                                 EarlyExitException eee =
-                                    new EarlyExitException(51, input);
+                                    new EarlyExitException(52, input);
                                 throw eee;
                         }
-                        cnt51++;
+                        cnt52++;
                     } while (true);
 
 
@@ -3980,16 +4012,16 @@
                     }
                     break;
                 case 20 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:367:4: ^( DOUBLE_PIPE left= fact_expression right= fact_expression )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:370:4: ^( DOUBLE_PIPE left= fact_expression right= fact_expression )
                     {
-                    match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_expression2019); 
+                    match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_expression2040); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2023);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2044);
                     left=fact_expression();
                     _fsp--;
 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2027);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2048);
                     right=fact_expression();
                     _fsp--;
 
@@ -4000,16 +4032,16 @@
                     }
                     break;
                 case 21 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:369:4: ^( DOUBLE_AMPER left= fact_expression right= fact_expression )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:372:4: ^( DOUBLE_AMPER left= fact_expression right= fact_expression )
                     {
-                    match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_fact_expression2037); 
+                    match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_fact_expression2058); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2041);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2062);
                     left=fact_expression();
                     _fsp--;
 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2045);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2066);
                     right=fact_expression();
                     _fsp--;
 
@@ -4020,28 +4052,28 @@
                     }
                     break;
                 case 22 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:372:4: ^( VT_ACCESSOR_PATH (ae= accessor_element )+ )
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:375:4: ^( VT_ACCESSOR_PATH (ae= accessor_element )+ )
                     {
-                    match(input,VT_ACCESSOR_PATH,FOLLOW_VT_ACCESSOR_PATH_in_fact_expression2056); 
+                    match(input,VT_ACCESSOR_PATH,FOLLOW_VT_ACCESSOR_PATH_in_fact_expression2077); 
 
                     match(input, Token.DOWN, null); 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:372:23: (ae= accessor_element )+
-                    int cnt52=0;
-                    loop52:
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:375:23: (ae= accessor_element )+
+                    int cnt53=0;
+                    loop53:
                     do {
-                        int alt52=2;
-                        int LA52_0 = input.LA(1);
+                        int alt53=2;
+                        int LA53_0 = input.LA(1);
 
-                        if ( (LA52_0==VT_ACCESSOR_ELEMENT) ) {
-                            alt52=1;
+                        if ( (LA53_0==VT_ACCESSOR_ELEMENT) ) {
+                            alt53=1;
                         }
 
 
-                        switch (alt52) {
+                        switch (alt53) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:372:24: ae= accessor_element
+                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:375:24: ae= accessor_element
                     	    {
-                    	    pushFollow(FOLLOW_accessor_element_in_fact_expression2061);
+                    	    pushFollow(FOLLOW_accessor_element_in_fact_expression2082);
                     	    ae=accessor_element();
                     	    _fsp--;
 
@@ -4051,12 +4083,12 @@
                     	    break;
 
                     	default :
-                    	    if ( cnt52 >= 1 ) break loop52;
+                    	    if ( cnt53 >= 1 ) break loop53;
                                 EarlyExitException eee =
-                                    new EarlyExitException(52, input);
+                                    new EarlyExitException(53, input);
                                 throw eee;
                         }
-                        cnt52++;
+                        cnt53++;
                     } while (true);
 
 
@@ -4066,55 +4098,55 @@
                     }
                     break;
                 case 23 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:374:4: s= STRING
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:377:4: s= STRING
                     {
                     s=(DroolsTree)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_fact_expression2076); 
+                    match(input,STRING,FOLLOW_STRING_in_fact_expression2097); 
                     	retval.descr = factory.createStringLiteralRestriction(s);	
 
                     }
                     break;
                 case 24 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:376:4: i= INT
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:379:4: i= INT
                     {
                     i=(DroolsTree)input.LT(1);
-                    match(input,INT,FOLLOW_INT_in_fact_expression2086); 
+                    match(input,INT,FOLLOW_INT_in_fact_expression2107); 
                     	retval.descr = factory.createIntLiteralRestriction(i);	
 
                     }
                     break;
                 case 25 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:378:4: f= FLOAT
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:381:4: f= FLOAT
                     {
                     f=(DroolsTree)input.LT(1);
-                    match(input,FLOAT,FOLLOW_FLOAT_in_fact_expression2096); 
+                    match(input,FLOAT,FOLLOW_FLOAT_in_fact_expression2117); 
                     	retval.descr = factory.createFloatLiteralRestriction(f);	
 
                     }
                     break;
                 case 26 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:380:4: b= BOOL
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:383:4: b= BOOL
                     {
                     b=(DroolsTree)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_fact_expression2106); 
+                    match(input,BOOL,FOLLOW_BOOL_in_fact_expression2127); 
                     	retval.descr = factory.createBoolLiteralRestriction(b);	
 
                     }
                     break;
                 case 27 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:382:4: n= NULL
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:385:4: n= NULL
                     {
                     n=(DroolsTree)input.LT(1);
-                    match(input,NULL,FOLLOW_NULL_in_fact_expression2116); 
+                    match(input,NULL,FOLLOW_NULL_in_fact_expression2137); 
                     	retval.descr = factory.createNullLiteralRestriction(n);	
 
                     }
                     break;
                 case 28 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:384:4: pc= VT_PAREN_CHUNK
+                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:387:4: pc= VT_PAREN_CHUNK
                     {
                     pc=(DroolsTree)input.LT(1);
-                    match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_fact_expression2126); 
+                    match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_fact_expression2147); 
                     	retval.descr = factory.createReturnValue(pc);	
 
                     }
@@ -4134,7 +4166,7 @@
 
 
     // $ANTLR start field_element
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:388:1: field_element returns [FieldConstraintDescr element] : ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:391:1: field_element returns [FieldConstraintDescr element] : ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) ;
     public final FieldConstraintDescr field_element() throws RecognitionException {
         FieldConstraintDescr element = null;
 
@@ -4145,29 +4177,29 @@
         	List<BaseDescr> aeList = new LinkedList<BaseDescr>();
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:391:3: ( ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:391:5: ^( VT_ACCESSOR_PATH (ae= accessor_element )+ )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:394:3: ( ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:394:5: ^( VT_ACCESSOR_PATH (ae= accessor_element )+ )
             {
-            match(input,VT_ACCESSOR_PATH,FOLLOW_VT_ACCESSOR_PATH_in_field_element2148); 
+            match(input,VT_ACCESSOR_PATH,FOLLOW_VT_ACCESSOR_PATH_in_field_element2169); 
 
             match(input, Token.DOWN, null); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:391:24: (ae= accessor_element )+
-            int cnt54=0;
-            loop54:
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:394:24: (ae= accessor_element )+
+            int cnt55=0;
+            loop55:
             do {
-                int alt54=2;
-                int LA54_0 = input.LA(1);
+                int alt55=2;
+                int LA55_0 = input.LA(1);
 
-                if ( (LA54_0==VT_ACCESSOR_ELEMENT) ) {
-                    alt54=1;
+                if ( (LA55_0==VT_ACCESSOR_ELEMENT) ) {
+                    alt55=1;
                 }
 
 
-                switch (alt54) {
+                switch (alt55) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:391:25: ae= accessor_element
+            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:394:25: ae= accessor_element
             	    {
-            	    pushFollow(FOLLOW_accessor_element_in_field_element2153);
+            	    pushFollow(FOLLOW_accessor_element_in_field_element2174);
             	    ae=accessor_element();
             	    _fsp--;
 
@@ -4177,12 +4209,12 @@
             	    break;
 
             	default :
-            	    if ( cnt54 >= 1 ) break loop54;
+            	    if ( cnt55 >= 1 ) break loop55;
                         EarlyExitException eee =
-                            new EarlyExitException(54, input);
+                            new EarlyExitException(55, input);
                         throw eee;
                 }
-                cnt54++;
+                cnt55++;
             } while (true);
 
 
@@ -4204,7 +4236,7 @@
 
 
     // $ANTLR start accessor_element
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:395:1: accessor_element returns [BaseDescr element] : ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:398:1: accessor_element returns [BaseDescr element] : ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* ) ;
     public final BaseDescr accessor_element() throws RecognitionException {
         BaseDescr element = null;
 
@@ -4213,31 +4245,31 @@
         List list_sc=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:396:2: ( ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:396:4: ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:399:2: ( ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:399:4: ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* )
             {
-            match(input,VT_ACCESSOR_ELEMENT,FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element2177); 
+            match(input,VT_ACCESSOR_ELEMENT,FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element2198); 
 
             match(input, Token.DOWN, null); 
             id=(DroolsTree)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_accessor_element2181); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:396:34: (sc+= VT_SQUARE_CHUNK )*
-            loop55:
+            match(input,ID,FOLLOW_ID_in_accessor_element2202); 
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:399:34: (sc+= VT_SQUARE_CHUNK )*
+            loop56:
             do {
-                int alt55=2;
-                int LA55_0 = input.LA(1);
+                int alt56=2;
+                int LA56_0 = input.LA(1);
 
-                if ( (LA55_0==VT_SQUARE_CHUNK) ) {
-                    alt55=1;
+                if ( (LA56_0==VT_SQUARE_CHUNK) ) {
+                    alt56=1;
                 }
 
 
-                switch (alt55) {
+                switch (alt56) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:396:34: sc+= VT_SQUARE_CHUNK
+            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:399:34: sc+= VT_SQUARE_CHUNK
             	    {
             	    sc=(DroolsTree)input.LT(1);
-            	    match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_accessor_element2185); 
+            	    match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_accessor_element2206); 
             	    if (list_sc==null) list_sc=new ArrayList();
             	    list_sc.add(sc);
 
@@ -4246,7 +4278,7 @@
             	    break;
 
             	default :
-            	    break loop55;
+            	    break loop56;
                 }
             } while (true);
 
@@ -4269,7 +4301,7 @@
 
 
     // $ANTLR start pattern_type
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:1: pattern_type returns [BaseDescr dataType] : ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:403:1: pattern_type returns [BaseDescr dataType] : ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) ;
     public final BaseDescr pattern_type() throws RecognitionException {
         BaseDescr dataType = null;
 
@@ -4279,30 +4311,30 @@
         List list_rightList=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:401:2: ( ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:401:4: ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:404:2: ( ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:404:4: ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
             {
-            match(input,VT_PATTERN_TYPE,FOLLOW_VT_PATTERN_TYPE_in_pattern_type2206); 
+            match(input,VT_PATTERN_TYPE,FOLLOW_VT_PATTERN_TYPE_in_pattern_type2227); 
 
             match(input, Token.DOWN, null); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:401:28: (idList+= ID )+
-            int cnt56=0;
-            loop56:
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:404:28: (idList+= ID )+
+            int cnt57=0;
+            loop57:
             do {
-                int alt56=2;
-                int LA56_0 = input.LA(1);
+                int alt57=2;
+                int LA57_0 = input.LA(1);
 
-                if ( (LA56_0==ID) ) {
-                    alt56=1;
+                if ( (LA57_0==ID) ) {
+                    alt57=1;
                 }
 
 
-                switch (alt56) {
+                switch (alt57) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:401:28: idList+= ID
+            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:404:28: idList+= ID
             	    {
             	    idList=(DroolsTree)input.LT(1);
-            	    match(input,ID,FOLLOW_ID_in_pattern_type2210); 
+            	    match(input,ID,FOLLOW_ID_in_pattern_type2231); 
             	    if (list_idList==null) list_idList=new ArrayList();
             	    list_idList.add(idList);
 
@@ -4311,32 +4343,32 @@
             	    break;
 
             	default :
-            	    if ( cnt56 >= 1 ) break loop56;
+            	    if ( cnt57 >= 1 ) break loop57;
                         EarlyExitException eee =
-                            new EarlyExitException(56, input);
+                            new EarlyExitException(57, input);
                         throw eee;
                 }
-                cnt56++;
+                cnt57++;
             } while (true);
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:401:34: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
-            loop57:
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:404:34: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
+            loop58:
             do {
-                int alt57=2;
-                int LA57_0 = input.LA(1);
+                int alt58=2;
+                int LA58_0 = input.LA(1);
 
-                if ( (LA57_0==LEFT_SQUARE) ) {
-                    alt57=1;
+                if ( (LA58_0==LEFT_SQUARE) ) {
+                    alt58=1;
                 }
 
 
-                switch (alt57) {
+                switch (alt58) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:401:35: LEFT_SQUARE rightList+= RIGHT_SQUARE
+            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:404:35: LEFT_SQUARE rightList+= RIGHT_SQUARE
             	    {
-            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_pattern_type2214); 
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_pattern_type2235); 
             	    rightList=(DroolsTree)input.LT(1);
-            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_pattern_type2218); 
+            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_pattern_type2239); 
             	    if (list_rightList==null) list_rightList=new ArrayList();
             	    list_rightList.add(rightList);
 
@@ -4345,7 +4377,7 @@
             	    break;
 
             	default :
-            	    break loop57;
+            	    break loop58;
                 }
             } while (true);
 
@@ -4368,7 +4400,7 @@
 
 
     // $ANTLR start data_type
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:405:1: data_type returns [BaseDescr dataType] : ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:408:1: data_type returns [BaseDescr dataType] : ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) ;
     public final BaseDescr data_type() throws RecognitionException {
         BaseDescr dataType = null;
 
@@ -4378,30 +4410,30 @@
         List list_rightList=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:406:2: ( ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:406:4: ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:409:2: ( ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:409:4: ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
             {
-            match(input,VT_DATA_TYPE,FOLLOW_VT_DATA_TYPE_in_data_type2240); 
+            match(input,VT_DATA_TYPE,FOLLOW_VT_DATA_TYPE_in_data_type2261); 
 
             match(input, Token.DOWN, null); 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:406:25: (idList+= ID )+
-            int cnt58=0;
-            loop58:
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:409:25: (idList+= ID )+
+            int cnt59=0;
+            loop59:
             do {
-                int alt58=2;
-                int LA58_0 = input.LA(1);
+                int alt59=2;
+                int LA59_0 = input.LA(1);
 
-                if ( (LA58_0==ID) ) {
-                    alt58=1;
+                if ( (LA59_0==ID) ) {
+                    alt59=1;
                 }
 
 
-                switch (alt58) {
+                switch (alt59) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:406:25: idList+= ID
+            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:409:25: idList+= ID
             	    {
             	    idList=(DroolsTree)input.LT(1);
-            	    match(input,ID,FOLLOW_ID_in_data_type2244); 
+            	    match(input,ID,FOLLOW_ID_in_data_type2265); 
             	    if (list_idList==null) list_idList=new ArrayList();
             	    list_idList.add(idList);
 
@@ -4410,32 +4442,32 @@
             	    break;
 
             	default :
-            	    if ( cnt58 >= 1 ) break loop58;
+            	    if ( cnt59 >= 1 ) break loop59;
                         EarlyExitException eee =
-                            new EarlyExitException(58, input);
+                            new EarlyExitException(59, input);
                         throw eee;
                 }
-                cnt58++;
+                cnt59++;
             } while (true);
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:406:31: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
-            loop59:
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:409:31: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
+            loop60:
             do {
-                int alt59=2;
-                int LA59_0 = input.LA(1);
+                int alt60=2;
+                int LA60_0 = input.LA(1);
 
-                if ( (LA59_0==LEFT_SQUARE) ) {
-                    alt59=1;
+                if ( (LA60_0==LEFT_SQUARE) ) {
+                    alt60=1;
                 }
 
 
-                switch (alt59) {
+                switch (alt60) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:406:32: LEFT_SQUARE rightList+= RIGHT_SQUARE
+            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:409:32: LEFT_SQUARE rightList+= RIGHT_SQUARE
             	    {
-            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_data_type2248); 
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_data_type2269); 
             	    rightList=(DroolsTree)input.LT(1);
-            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_data_type2252); 
+            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_data_type2273); 
             	    if (list_rightList==null) list_rightList=new ArrayList();
             	    list_rightList.add(rightList);
 
@@ -4444,7 +4476,7 @@
             	    break;
 
             	default :
-            	    break loop59;
+            	    break loop60;
                 }
             } while (true);
 
@@ -4512,204 +4544,205 @@
     public static final BitSet FOLLOW_parameters_in_query460 = new BitSet(new long[]{0x0000000000400000L});
     public static final BitSet FOLLOW_lhs_block_in_query465 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
     public static final BitSet FOLLOW_END_in_query469 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_RULE_in_rule491 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_RULE_ID_in_rule495 = new BitSet(new long[]{0x0000000000030000L,0x0000000040000000L});
-    public static final BitSet FOLLOW_rule_attributes_in_rule499 = new BitSet(new long[]{0x0000000000020000L,0x0000000040000000L});
-    public static final BitSet FOLLOW_when_part_in_rule504 = new BitSet(new long[]{0x0000000000020000L});
-    public static final BitSet FOLLOW_VT_RHS_CHUNK_in_rule509 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_WHEN_in_when_part528 = new BitSet(new long[]{0x0000000000400000L});
-    public static final BitSet FOLLOW_lhs_block_in_when_part532 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_RULE_ATTRIBUTES_in_rule_attributes554 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_ATTRIBUTES_in_rule_attributes556 = new BitSet(new long[]{0x01FFE00000000000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes562 = new BitSet(new long[]{0x01FFE00000000008L});
-    public static final BitSet FOLLOW_VT_PARAM_LIST_in_parameters586 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_param_definition_in_parameters591 = new BitSet(new long[]{0x0000004000000008L,0x0000000000080000L});
-    public static final BitSet FOLLOW_data_type_in_param_definition613 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_argument_in_param_definition618 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_argument638 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_argument641 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_argument645 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
-    public static final BitSet FOLLOW_VK_DECLARE_in_type_declaration671 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_TYPE_DECLARE_ID_in_type_declaration675 = new BitSet(new long[]{0x0000000000000000L,0x0000000008480000L});
-    public static final BitSet FOLLOW_decl_metadata_in_type_declaration684 = new BitSet(new long[]{0x0000000000000000L,0x0000000008480000L});
-    public static final BitSet FOLLOW_decl_field_in_type_declaration697 = new BitSet(new long[]{0x0000000000000000L,0x0000000000480000L});
-    public static final BitSet FOLLOW_END_in_type_declaration703 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_AT_in_decl_metadata728 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_decl_metadata732 = new BitSet(new long[]{0x0000000000100000L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_decl_metadata736 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_ID_in_decl_field763 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_decl_field_initialization_in_decl_field767 = new BitSet(new long[]{0x0000004000000000L});
-    public static final BitSet FOLLOW_data_type_in_decl_field772 = new BitSet(new long[]{0x0000000000000008L,0x0000000008000000L});
-    public static final BitSet FOLLOW_decl_metadata_in_decl_field777 = new BitSet(new long[]{0x0000000000000008L,0x0000000008000000L});
-    public static final BitSet FOLLOW_EQUALS_in_decl_field_initialization804 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_decl_field_initialization808 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_SALIENCE_in_rule_attribute831 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_INT_in_rule_attribute836 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_rule_attribute840 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_NO_LOOP_in_rule_attribute851 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_BOOL_in_rule_attribute855 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_AGENDA_GROUP_in_rule_attribute867 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_STRING_in_rule_attribute871 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_DURATION_in_rule_attribute882 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_INT_in_rule_attribute886 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_ACTIVATION_GROUP_in_rule_attribute898 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_STRING_in_rule_attribute902 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_AUTO_FOCUS_in_rule_attribute912 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_BOOL_in_rule_attribute916 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_DATE_EFFECTIVE_in_rule_attribute927 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_STRING_in_rule_attribute931 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_DATE_EXPIRES_in_rule_attribute941 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_STRING_in_rule_attribute945 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_ENABLED_in_rule_attribute955 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_BOOL_in_rule_attribute959 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_RULEFLOW_GROUP_in_rule_attribute969 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_STRING_in_rule_attribute973 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_LOCK_ON_ACTIVE_in_rule_attribute983 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_BOOL_in_rule_attribute987 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_DIALECT_in_rule_attribute997 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_STRING_in_rule_attribute1001 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_AND_IMPLICIT_in_lhs_block1026 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs_block1031 = new BitSet(new long[]{0x0000000087800008L,0x0000000800006204L});
-    public static final BitSet FOLLOW_VT_OR_PREFIX_in_lhs1057 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1062 = new BitSet(new long[]{0x0000000087800008L,0x0000000800006204L});
-    public static final BitSet FOLLOW_VT_OR_INFIX_in_lhs1078 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1082 = new BitSet(new long[]{0x0000000087800000L,0x0000000800006204L});
-    public static final BitSet FOLLOW_lhs_in_lhs1086 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_AND_PREFIX_in_lhs1098 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1103 = new BitSet(new long[]{0x0000000087800008L,0x0000000800006204L});
-    public static final BitSet FOLLOW_VT_AND_INFIX_in_lhs1119 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1123 = new BitSet(new long[]{0x0000000087800000L,0x0000000800006204L});
-    public static final BitSet FOLLOW_lhs_in_lhs1127 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_EXISTS_in_lhs1139 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1143 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_NOT_in_lhs1155 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1159 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_EVAL_in_lhs1171 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_lhs1175 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_FORALL_in_lhs1187 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1192 = new BitSet(new long[]{0x0000000087800008L,0x0000000800006204L});
-    public static final BitSet FOLLOW_FROM_in_lhs1206 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs1210 = new BitSet(new long[]{0x0000000020000000L,0x000000A000000100L});
-    public static final BitSet FOLLOW_from_elements_in_lhs1214 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs1225 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ACCUMULATE_in_from_elements1246 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_from_elements1250 = new BitSet(new long[]{0x0000000018000000L});
-    public static final BitSet FOLLOW_accumulate_parts_in_from_elements1260 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_COLLECT_in_from_elements1273 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_from_elements1277 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_ENTRY_POINT_in_from_elements1289 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_ENTRYPOINT_ID_in_from_elements1293 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_from_source_clause_in_from_elements1304 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_parts1325 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_parts1336 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_ACCUMULATE_INIT_CLAUSE_in_accumulate_init_clause1359 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_INIT_in_accumulate_init_clause1368 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1372 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_ACTION_in_accumulate_init_clause1380 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1384 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_accumulate_init_reverse_clause_in_accumulate_init_clause1393 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
-    public static final BitSet FOLLOW_VK_RESULT_in_accumulate_init_clause1400 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1404 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_REVERSE_in_accumulate_init_reverse_clause1427 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_reverse_clause1431 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_ACCUMULATE_ID_CLAUSE_in_accumulate_id_clause1453 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_accumulate_id_clause1457 = new BitSet(new long[]{0x0000000000100000L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_id_clause1461 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_FROM_SOURCE_in_from_source_clause1483 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_from_source_clause1487 = new BitSet(new long[]{0x0000000040100008L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_from_source_clause1491 = new BitSet(new long[]{0x0000000040000008L});
-    public static final BitSet FOLLOW_expression_chain_in_from_source_clause1500 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_EXPRESSION_CHAIN_in_expression_chain1519 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_expression_chain1523 = new BitSet(new long[]{0x0000000040180008L});
-    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_expression_chain1527 = new BitSet(new long[]{0x0000000040100008L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_expression_chain1532 = new BitSet(new long[]{0x0000000040000008L});
-    public static final BitSet FOLLOW_expression_chain_in_expression_chain1540 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_PATTERN_in_lhs_pattern1558 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_lhs_pattern1562 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_over_clause_in_lhs_pattern1567 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_OVER_in_over_clause1592 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_over_element_in_over_clause1597 = new BitSet(new long[]{0x0000000000200008L});
-    public static final BitSet FOLLOW_VT_BEHAVIOR_in_over_element1618 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_over_element1620 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_ID_in_over_element1624 = new BitSet(new long[]{0x0000000000100000L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_over_element1628 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_FACT_in_fact_expression1651 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_pattern_type_in_fact_expression1655 = new BitSet(new long[]{0x0000001F00100048L,0x00037E07808804FCL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1660 = new BitSet(new long[]{0x0000001F00100048L,0x00037E07808804FCL});
-    public static final BitSet FOLLOW_VT_FACT_BINDING_in_fact_expression1674 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression1678 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1682 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_FACT_OR_in_fact_expression1694 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1698 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1702 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_FIELD_in_fact_expression1713 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_field_element_in_fact_expression1717 = new BitSet(new long[]{0x0000001F00100048L,0x00037E07808804FCL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1721 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_BIND_FIELD_in_fact_expression1732 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression1736 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1740 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_EVAL_in_fact_expression1751 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_fact_expression1755 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_EQUAL_in_fact_expression1768 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1772 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_NOT_EQUAL_in_fact_expression1784 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1788 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_GREATER_in_fact_expression1800 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1804 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_GREATER_EQUAL_in_fact_expression1816 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1820 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_LESS_in_fact_expression1832 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1836 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_LESS_EQUAL_in_fact_expression1848 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1852 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_CONTAINS_in_fact_expression1864 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1868 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_VK_RULE_in_rule496 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_RULE_ID_in_rule500 = new BitSet(new long[]{0x0000000000030000L,0x0000000048000000L});
+    public static final BitSet FOLLOW_rule_attributes_in_rule504 = new BitSet(new long[]{0x0000000000020000L,0x0000000048000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_rule513 = new BitSet(new long[]{0x0000000000020000L,0x0000000048000000L});
+    public static final BitSet FOLLOW_when_part_in_rule525 = new BitSet(new long[]{0x0000000000020000L});
+    public static final BitSet FOLLOW_VT_RHS_CHUNK_in_rule530 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_WHEN_in_when_part549 = new BitSet(new long[]{0x0000000000400000L});
+    public static final BitSet FOLLOW_lhs_block_in_when_part553 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_RULE_ATTRIBUTES_in_rule_attributes575 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_ATTRIBUTES_in_rule_attributes577 = new BitSet(new long[]{0x01FFE00000000000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes583 = new BitSet(new long[]{0x01FFE00000000008L});
+    public static final BitSet FOLLOW_VT_PARAM_LIST_in_parameters607 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_param_definition_in_parameters612 = new BitSet(new long[]{0x0000004000000008L,0x0000000000080000L});
+    public static final BitSet FOLLOW_data_type_in_param_definition634 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_argument_in_param_definition639 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_argument659 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_argument662 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_argument666 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
+    public static final BitSet FOLLOW_VK_DECLARE_in_type_declaration692 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_TYPE_DECLARE_ID_in_type_declaration696 = new BitSet(new long[]{0x0000000000000000L,0x0000000008480000L});
+    public static final BitSet FOLLOW_decl_metadata_in_type_declaration705 = new BitSet(new long[]{0x0000000000000000L,0x0000000008480000L});
+    public static final BitSet FOLLOW_decl_field_in_type_declaration718 = new BitSet(new long[]{0x0000000000000000L,0x0000000000480000L});
+    public static final BitSet FOLLOW_END_in_type_declaration724 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_AT_in_decl_metadata749 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_decl_metadata753 = new BitSet(new long[]{0x0000000000100000L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_decl_metadata757 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_ID_in_decl_field784 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_decl_field_initialization_in_decl_field788 = new BitSet(new long[]{0x0000004000000000L});
+    public static final BitSet FOLLOW_data_type_in_decl_field793 = new BitSet(new long[]{0x0000000000000008L,0x0000000008000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_decl_field798 = new BitSet(new long[]{0x0000000000000008L,0x0000000008000000L});
+    public static final BitSet FOLLOW_EQUALS_in_decl_field_initialization825 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_decl_field_initialization829 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_SALIENCE_in_rule_attribute852 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_INT_in_rule_attribute857 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_rule_attribute861 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_NO_LOOP_in_rule_attribute872 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_BOOL_in_rule_attribute876 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_AGENDA_GROUP_in_rule_attribute888 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_STRING_in_rule_attribute892 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_DURATION_in_rule_attribute903 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_INT_in_rule_attribute907 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_ACTIVATION_GROUP_in_rule_attribute919 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_STRING_in_rule_attribute923 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_AUTO_FOCUS_in_rule_attribute933 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_BOOL_in_rule_attribute937 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_DATE_EFFECTIVE_in_rule_attribute948 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_STRING_in_rule_attribute952 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_DATE_EXPIRES_in_rule_attribute962 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_STRING_in_rule_attribute966 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_ENABLED_in_rule_attribute976 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_BOOL_in_rule_attribute980 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_RULEFLOW_GROUP_in_rule_attribute990 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_STRING_in_rule_attribute994 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_LOCK_ON_ACTIVE_in_rule_attribute1004 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_BOOL_in_rule_attribute1008 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_DIALECT_in_rule_attribute1018 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_STRING_in_rule_attribute1022 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_AND_IMPLICIT_in_lhs_block1047 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_in_lhs_block1052 = new BitSet(new long[]{0x0000000087800008L,0x0000000800006204L});
+    public static final BitSet FOLLOW_VT_OR_PREFIX_in_lhs1078 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_in_lhs1083 = new BitSet(new long[]{0x0000000087800008L,0x0000000800006204L});
+    public static final BitSet FOLLOW_VT_OR_INFIX_in_lhs1099 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_in_lhs1103 = new BitSet(new long[]{0x0000000087800000L,0x0000000800006204L});
+    public static final BitSet FOLLOW_lhs_in_lhs1107 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_AND_PREFIX_in_lhs1119 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_in_lhs1124 = new BitSet(new long[]{0x0000000087800008L,0x0000000800006204L});
+    public static final BitSet FOLLOW_VT_AND_INFIX_in_lhs1140 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_in_lhs1144 = new BitSet(new long[]{0x0000000087800000L,0x0000000800006204L});
+    public static final BitSet FOLLOW_lhs_in_lhs1148 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_EXISTS_in_lhs1160 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_in_lhs1164 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_NOT_in_lhs1176 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_in_lhs1180 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_EVAL_in_lhs1192 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_lhs1196 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_FORALL_in_lhs1208 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_in_lhs1213 = new BitSet(new long[]{0x0000000087800008L,0x0000000800006204L});
+    public static final BitSet FOLLOW_FROM_in_lhs1227 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs1231 = new BitSet(new long[]{0x0000000020000000L,0x000000A000000100L});
+    public static final BitSet FOLLOW_from_elements_in_lhs1235 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs1246 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACCUMULATE_in_from_elements1267 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_in_from_elements1271 = new BitSet(new long[]{0x0000000018000000L});
+    public static final BitSet FOLLOW_accumulate_parts_in_from_elements1281 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_COLLECT_in_from_elements1294 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_in_from_elements1298 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_ENTRY_POINT_in_from_elements1310 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_ENTRYPOINT_ID_in_from_elements1314 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_from_source_clause_in_from_elements1325 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_parts1346 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_parts1357 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_ACCUMULATE_INIT_CLAUSE_in_accumulate_init_clause1380 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_INIT_in_accumulate_init_clause1389 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1393 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_ACTION_in_accumulate_init_clause1401 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1405 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_accumulate_init_reverse_clause_in_accumulate_init_clause1414 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+    public static final BitSet FOLLOW_VK_RESULT_in_accumulate_init_clause1421 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1425 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_REVERSE_in_accumulate_init_reverse_clause1448 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_reverse_clause1452 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_ACCUMULATE_ID_CLAUSE_in_accumulate_id_clause1474 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_accumulate_id_clause1478 = new BitSet(new long[]{0x0000000000100000L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_id_clause1482 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_FROM_SOURCE_in_from_source_clause1504 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_from_source_clause1508 = new BitSet(new long[]{0x0000000040100008L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_from_source_clause1512 = new BitSet(new long[]{0x0000000040000008L});
+    public static final BitSet FOLLOW_expression_chain_in_from_source_clause1521 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_EXPRESSION_CHAIN_in_expression_chain1540 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_expression_chain1544 = new BitSet(new long[]{0x0000000040180008L});
+    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_expression_chain1548 = new BitSet(new long[]{0x0000000040100008L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_expression_chain1553 = new BitSet(new long[]{0x0000000040000008L});
+    public static final BitSet FOLLOW_expression_chain_in_expression_chain1561 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_PATTERN_in_lhs_pattern1579 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_lhs_pattern1583 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_over_clause_in_lhs_pattern1588 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_OVER_in_over_clause1613 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_over_element_in_over_clause1618 = new BitSet(new long[]{0x0000000000200008L});
+    public static final BitSet FOLLOW_VT_BEHAVIOR_in_over_element1639 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_over_element1641 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_ID_in_over_element1645 = new BitSet(new long[]{0x0000000000100000L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_over_element1649 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_FACT_in_fact_expression1672 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_pattern_type_in_fact_expression1676 = new BitSet(new long[]{0x0000001F00100048L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1681 = new BitSet(new long[]{0x0000001F00100048L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_VT_FACT_BINDING_in_fact_expression1695 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression1699 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1703 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_FACT_OR_in_fact_expression1715 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1719 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1723 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_FIELD_in_fact_expression1734 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_field_element_in_fact_expression1738 = new BitSet(new long[]{0x0000001F00100048L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1742 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_BIND_FIELD_in_fact_expression1753 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression1757 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1761 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_EVAL_in_fact_expression1772 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_fact_expression1776 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_EQUAL_in_fact_expression1789 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1793 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_NOT_EQUAL_in_fact_expression1805 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1809 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_GREATER_in_fact_expression1821 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1825 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_GREATER_EQUAL_in_fact_expression1837 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1841 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_LESS_in_fact_expression1853 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1857 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_LESS_EQUAL_in_fact_expression1869 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1873 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_EXCLUDES_in_fact_expression1885 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_CONTAINS_in_fact_expression1885 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VK_NOT_in_fact_expression1889 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1894 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_MATCHES_in_fact_expression1906 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_EXCLUDES_in_fact_expression1906 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VK_NOT_in_fact_expression1910 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1915 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_SOUNDSLIKE_in_fact_expression1927 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_MATCHES_in_fact_expression1927 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VK_NOT_in_fact_expression1931 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1936 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_MEMBEROF_in_fact_expression1948 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_SOUNDSLIKE_in_fact_expression1948 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VK_NOT_in_fact_expression1952 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1957 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_ID_in_fact_expression1969 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1973 = new BitSet(new long[]{0x0000001F00180040L,0x00037E07808804FCL});
-    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_fact_expression1978 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1983 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_IN_in_fact_expression1994 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1998 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2004 = new BitSet(new long[]{0x0000001F00100048L,0x00037E07808804FCL});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_expression2019 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2023 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2027 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_fact_expression2037 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2041 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2045 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_ACCESSOR_PATH_in_fact_expression2056 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_accessor_element_in_fact_expression2061 = new BitSet(new long[]{0x0000002000000008L});
-    public static final BitSet FOLLOW_STRING_in_fact_expression2076 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INT_in_fact_expression2086 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FLOAT_in_fact_expression2096 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BOOL_in_fact_expression2106 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_fact_expression2116 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_fact_expression2126 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_ACCESSOR_PATH_in_field_element2148 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_accessor_element_in_field_element2153 = new BitSet(new long[]{0x0000002000000008L});
-    public static final BitSet FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element2177 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_accessor_element2181 = new BitSet(new long[]{0x0000000000080008L});
-    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_accessor_element2185 = new BitSet(new long[]{0x0000000000080008L});
-    public static final BitSet FOLLOW_VT_PATTERN_TYPE_in_pattern_type2206 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_pattern_type2210 = new BitSet(new long[]{0x0000000000000008L,0x0004000000080000L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_pattern_type2214 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_pattern_type2218 = new BitSet(new long[]{0x0000000000000008L,0x0004000000000000L});
-    public static final BitSet FOLLOW_VT_DATA_TYPE_in_data_type2240 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_data_type2244 = new BitSet(new long[]{0x0000000000000008L,0x0004000000080000L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_data_type2248 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_data_type2252 = new BitSet(new long[]{0x0000000000000008L,0x0004000000000000L});
+    public static final BitSet FOLLOW_VK_MEMBEROF_in_fact_expression1969 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1973 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1978 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_ID_in_fact_expression1990 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1994 = new BitSet(new long[]{0x0000001F00180040L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_fact_expression1999 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2004 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_IN_in_fact_expression2015 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression2019 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2025 = new BitSet(new long[]{0x0000001F00100048L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_expression2040 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2044 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2048 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_fact_expression2058 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2062 = new BitSet(new long[]{0x0000001F00100040L,0x00037E07808804FCL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2066 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_ACCESSOR_PATH_in_fact_expression2077 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_accessor_element_in_fact_expression2082 = new BitSet(new long[]{0x0000002000000008L});
+    public static final BitSet FOLLOW_STRING_in_fact_expression2097 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_fact_expression2107 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_fact_expression2117 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_fact_expression2127 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_fact_expression2137 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_fact_expression2147 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_ACCESSOR_PATH_in_field_element2169 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_accessor_element_in_field_element2174 = new BitSet(new long[]{0x0000002000000008L});
+    public static final BitSet FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element2198 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_accessor_element2202 = new BitSet(new long[]{0x0000000000080008L});
+    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_accessor_element2206 = new BitSet(new long[]{0x0000000000080008L});
+    public static final BitSet FOLLOW_VT_PATTERN_TYPE_in_pattern_type2227 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_pattern_type2231 = new BitSet(new long[]{0x0000000000000008L,0x0004000000080000L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_pattern_type2235 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_pattern_type2239 = new BitSet(new long[]{0x0000000000000008L,0x0004000000000000L});
+    public static final BitSet FOLLOW_VT_DATA_TYPE_in_data_type2261 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_data_type2265 = new BitSet(new long[]{0x0000000000000008L,0x0004000000080000L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_data_type2269 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_data_type2273 = new BitSet(new long[]{0x0000000000000008L,0x0004000000000000L});
 
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java	2008-10-17 13:03:49 UTC (rev 23496)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java	2008-10-17 16:23:06 UTC (rev 23497)
@@ -423,7 +423,7 @@
 	 */
 	public RuleDescr createRule(DroolsTree start, DroolsTree id,
 			List<AttributeDescr> attributeList, AndDescr andDescr,
-			DroolsTree content) {
+			DroolsTree content, List<Map> metadata) {
 
 		RuleDescr ruleDescr = new RuleDescr(getCleanId(id), null);
 
@@ -432,6 +432,15 @@
 				ruleDescr.addAttribute(attributeDescr);
 			}
 		}
+		
+		if ( null != metadata && metadata.size() > 0){
+			for (Map<DroolsTree,DroolsTree> map : metadata){
+				for (Map.Entry<DroolsTree,DroolsTree> entry : map.entrySet() ){ 
+					String chunkData = entry.getValue().getText();
+					ruleDescr.addMetaAttribute( entry.getKey().getText(),chunkData.substring(1, chunkData.length() - 1).trim()  );
+				}
+			}
+		}
 
 		if (null == andDescr) {
 			ruleDescr.setLhs(new AndDescr());
@@ -458,6 +467,7 @@
 
 		ruleDescr.setLocation(getLineLocation(start), getColumnLocation(start));
 		ruleDescr.setEndCharacter(getEndOffsetLocation(content));
+		
 
 		return ruleDescr;
 	}

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/RuleDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/RuleDescr.java	2008-10-17 13:03:49 UTC (rev 23496)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/RuleDescr.java	2008-10-17 16:23:06 UTC (rev 23497)
@@ -21,7 +21,9 @@
 import java.io.ObjectOutput;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.drools.rule.Dialectable;
 import org.drools.rule.Namespaceable;
@@ -33,6 +35,7 @@
     private String            name;
     private String            dialect;
     private String            documentation;
+    private Map<String, String> metaAttributes;
 
     private AndDescr          lhs;
     private Object            consequence;
@@ -58,6 +61,7 @@
                      final String documentation) {
         this.name = ruleName;
         this.documentation = documentation;
+        this.metaAttributes = new HashMap<String, String>();
     }
 
     public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
@@ -133,7 +137,36 @@
     public String getDocumentation() {
         return this.documentation;
     }
+    
+    /**
+     * Adds a new attribute
+     * @param attr
+     * @param value
+     */
+    public void addMetaAttribute( String attr, String value ) {
+        if( this.metaAttributes == null ) {
+            this.metaAttributes = new HashMap<String, String>();
+        }
+        this.metaAttributes.put( attr, value );
+    }
 
+    /**
+     * Returns an attribute value or null if it is not defined
+     * @param attr
+     * @return
+     */
+    public String getMetaAttribute( String attr ) {
+        return this.metaAttributes != null ? this.metaAttributes.get( attr ) : null;
+    }
+
+    /**
+     * Returns the attribute map
+     * @return
+     */
+    public Map<String, String> getMetaAttributes() {
+        return this.metaAttributes != null ? this.metaAttributes : Collections.EMPTY_MAP;
+    }
+
     public List<AttributeDescr> getAttributes() {
         return this.attributes;
     }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java	2008-10-17 13:03:49 UTC (rev 23496)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java	2008-10-17 16:23:06 UTC (rev 23497)
@@ -43,7 +43,9 @@
      */
     public void build(final RuleBuildContext context) {
         RuleDescr ruleDescr = context.getRuleDescr();
-
+        
+        context.getRule().getMetaAttributes().putAll(ruleDescr.getMetaAttributes());
+        
         final RuleConditionBuilder builder = (RuleConditionBuilder) context.getDialect().getBuilder( ruleDescr.getLhs().getClass() );
         if ( builder != null ) {
             Pattern prefixPattern = null;

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

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g	2008-10-17 13:03:49 UTC (rev 23496)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g	2008-10-17 16:23:06 UTC (rev 23497)
@@ -129,8 +129,11 @@
 	;
 
 rule returns [RuleDescr ruleDescr]
-	:	^(start=VK_RULE id=VT_RULE_ID ra=rule_attributes? wn=when_part? content=VT_RHS_CHUNK)
-	{	$ruleDescr = factory.createRule($start, $id, $ra.attrList, $wn.andDescr, $content);	}
+ at init {	List<Map> declMetadaList = new LinkedList<Map>();}
+	:	^(start=VK_RULE id=VT_RULE_ID ra=rule_attributes? 
+		(dm=decl_metadata {declMetadaList.add($dm.attData);	})* 
+		 wn=when_part? content=VT_RHS_CHUNK)
+	{	$ruleDescr = factory.createRule($start, $id, $ra.attrList, $wn.andDescr, $content, declMetadaList);	}
 	;
 
 when_part returns [AndDescr andDescr]

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2008-10-17 13:03:49 UTC (rev 23496)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2008-10-17 16:23:06 UTC (rev 23497)
@@ -215,7 +215,37 @@
         assertEquals( cheesery2,
                       list.get( 1 ) );
     }
+    public void testMetaConsequence() throws Exception {
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_MetaConsequence.drl" ) ) );
+        final Package pkg = builder.getPackage();
 
+        RuleBase ruleBase = getRuleBase();
+        ruleBase.addPackage( pkg );
+        ruleBase = SerializationHelper.serializeObject( ruleBase );
+        StatefulSession session = ruleBase.newStatefulSession();
+        List results = new ArrayList();
+        session.setGlobal( "results",
+                           results );
+
+        
+
+        session.insert( new Person("Michael") );
+
+        session = SerializationHelper.getSerialisedStatefulSession( session,
+                                                                    ruleBase );
+        results = (List) session.getGlobal( "results" );
+
+        session.fireAllRules();
+        assertEquals( 2,
+                      results.size() );
+        assertEquals( "bar",
+                      (results.get( 0 )) );
+        assertEquals( "bar2",
+                      (results.get( 1 )) );
+
+
+    }
     public void testPrimitiveArray() throws Exception {
         final PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_primitiveArray.drl" ) ) );

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java	2008-10-17 13:03:49 UTC (rev 23496)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java	2008-10-17 16:23:06 UTC (rev 23497)
@@ -2972,10 +2972,23 @@
 		assertEquals("duration", descr.getMetaAttribute("duration"));
 		assertEquals("timestamp", descr.getMetaAttribute("timestamp"));
 	}
+	public void testRuleMetadata() throws Exception {
+		parseResource("compilation_unit", "compilation_unit",
+				"Rule_with_Metadata.drl");
+		final PackageDescr pack = walker.getPackageDescr();
+//		@fooAttribute(barValue)
+//		@fooAtt2(barVal2)
+		RuleDescr rule = pack.getRules().get(0);
+		assertTrue(rule.getMetaAttributes().containsKey("fooAttribute"));
+		assertEquals("barValue",rule.getMetaAttribute("fooAttribute"));
+		assertTrue(rule.getMetaAttributes().containsKey("fooAtt2"));
+		assertEquals("barVal2",rule.getMetaAttribute("fooAtt2"));
+	}
 
 	public void testTypeDeclarationWithFields() throws Exception {
 		parseResource("compilation_unit", "compilation_unit",
 				"declare_type_with_fields.drl");
+
 		final PackageDescr pack = walker.getPackageDescr();
 
 		List<TypeDeclarationDescr> td = pack.getTypeDeclarations();

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_MetaConsequence.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_MetaConsequence.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_MetaConsequence.drl	2008-10-17 16:23:06 UTC (rev 23497)
@@ -0,0 +1,19 @@
+package org.drools;
+
+global java.util.List results;
+
+rule "Test Consequence"
+	@foo(bar)
+	@foo2(bar2)
+	@ruleID(1234)
+	@parentRuleID(1234)
+	@dateActive(12/1/08)
+	@price(123.00)
+	@errorMSG(Stop)
+	@userMSG(Please Stop)
+  when
+    Person(name == "Michael")
+  then
+    results.add( drools.getRule().getMetaAttribute("foo"));
+    results.add( drools.getRule().getMetaAttribute("foo2"));
+end
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/Rule_with_Metadata.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/Rule_with_Metadata.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/Rule_with_Metadata.drl	2008-10-17 16:23:06 UTC (rev 23497)
@@ -0,0 +1,10 @@
+package org.drools;
+
+rule test_rule
+	@fooAttribute(barValue)
+	@fooAtt2(barVal2)
+	when
+		foo()
+	then
+		
+end
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Rule.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Rule.java	2008-10-17 13:03:49 UTC (rev 23496)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Rule.java	2008-10-17 16:23:06 UTC (rev 23497)
@@ -21,6 +21,7 @@
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.util.Calendar;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 
@@ -77,6 +78,8 @@
     private String            dialect;
 
     private String            agendaGroup;
+    
+    private Map<String,String> metaAttributes;
 
     /** Consequence. */
     private Consequence       consequence;
@@ -120,6 +123,7 @@
         out.writeObject(lhsRoot);
         out.writeObject(dialect);
         out.writeObject(agendaGroup);
+        out.writeObject(metaAttributes);
         
         if ( this.consequence instanceof CompiledInvoker ) {
             out.writeObject(  null );
@@ -150,6 +154,8 @@
         lhsRoot = (GroupElement)in.readObject();
         dialect = (String)in.readObject();
         agendaGroup = (String)in.readObject();
+        metaAttributes = (Map<String,String>)in.readObject();
+        
         consequence = (Consequence)in.readObject();
         duration = (Duration)in.readObject();
         loadOrder   = in.readLong();
@@ -188,6 +194,7 @@
         this.semanticallyValid = true;
         this.enabled = true;
         this.salience = SalienceInteger.DEFAULT_SALIENCE;
+        this.metaAttributes = new HashMap<String,String>();
     }
 
     /**
@@ -629,4 +636,13 @@
     public boolean isEnabled() {
         return this.enabled;
     }
+	public void setMetaAttributes(Map<String,String> metaAttributes) {
+		this.metaAttributes = metaAttributes;
+	}
+	public Map<String,String> getMetaAttributes() {
+		return metaAttributes;
+	}
+    public String getMetaAttribute(final String identifier) {
+        return (String) this.metaAttributes.get( identifier );
+    }
 }




More information about the jboss-svn-commits mailing list