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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Nov 24 19:10:23 EST 2008


Author: porcelli
Date: 2008-11-24 19:10:23 -0500 (Mon, 24 Nov 2008)
New Revision: 24078

Modified:
   labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
   labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
   labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DroolsSentenceType.java
   labs/jbossrules/branches/etirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g
   labs/jbossrules/branches/etirelli/drools-compiler/src/test/java/org/drools/lang/DRLContextTest.java
   labs/jbossrules/branches/etirelli/drools-compiler/src/test/java/org/drools/lang/ErrorsParserTest.java
   labs/jbossrules/branches/etirelli/drools-eclipse/drools-eclipse-test/src/test/java/org/drools/eclipse/editors/completion/CompletionContextTest.java
Log:
update to ANTLR 3.1.1.. and some bug fixes regarding IDE

Modified: labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
===================================================================
--- labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2008-11-24 23:31:46 UTC (rev 24077)
+++ labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2008-11-25 00:10:23 UTC (rev 24078)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2008-11-24 14:42:04
+// $ANTLR 3.1.1 /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2008-11-24 22:04:05
 
 	package org.drools.lang;
 
@@ -186,10 +186,10 @@
         try {
             int _type = WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1677:9: ( ( ' ' | '\\t' | '\\f' | EOL )+ )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1677:17: ( ' ' | '\\t' | '\\f' | EOL )+
+            // /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 )+
             {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1677: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 )+
             int cnt1=0;
             loop1:
             do {
@@ -221,28 +221,28 @@
 
                 switch (alt1) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1677:19: ' '
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1684:19: ' '
             	    {
             	    match(' '); if (state.failed) return ;
 
             	    }
             	    break;
             	case 2 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1678:19: '\\t'
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1685:19: '\\t'
             	    {
             	    match('\t'); if (state.failed) return ;
 
             	    }
             	    break;
             	case 3 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1679:19: '\\f'
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1686:19: '\\f'
             	    {
             	    match('\f'); if (state.failed) return ;
 
             	    }
             	    break;
             	case 4 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1680:19: EOL
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1687:19: EOL
             	    {
             	    mEOL(); if (state.failed) return ;
 
@@ -276,10 +276,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:1686:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1687:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // /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' )
             {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1687: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' )
             int alt2=3;
             int LA2_0 = input.LA(1);
 
@@ -304,7 +304,7 @@
             }
             switch (alt2) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1687:14: ( '\\r\\n' )=> '\\r\\n'
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1694:14: ( '\\r\\n' )=> '\\r\\n'
                     {
                     match("\r\n"); if (state.failed) return ;
 
@@ -312,14 +312,14 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1688:25: '\\r'
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1695:25: '\\r'
                     {
                     match('\r'); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1689:25: '\\n'
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1696:25: '\\n'
                     {
                     match('\n'); if (state.failed) return ;
 
@@ -342,10 +342,10 @@
         try {
             int _type = INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1694:2: ( ( '-' )? ( '0' .. '9' )+ )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1694:4: ( '-' )? ( '0' .. '9' )+
+            // /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' )+
             {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1694:4: ( '-' )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:4: ( '-' )?
             int alt3=2;
             int LA3_0 = input.LA(1);
 
@@ -354,7 +354,7 @@
             }
             switch (alt3) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1694:5: '-'
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:5: '-'
                     {
                     match('-'); if (state.failed) return ;
 
@@ -363,7 +363,7 @@
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1694:10: ( '0' .. '9' )+
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:10: ( '0' .. '9' )+
             int cnt4=0;
             loop4:
             do {
@@ -377,7 +377,7 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1694:11: '0' .. '9'
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (state.failed) return ;
 
@@ -410,10 +410,10 @@
         try {
             int _type = FLOAT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1698:2: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1698:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
+            // /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' )+
             {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1698:4: ( '-' )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:4: ( '-' )?
             int alt5=2;
             int LA5_0 = input.LA(1);
 
@@ -422,7 +422,7 @@
             }
             switch (alt5) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1698:5: '-'
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:5: '-'
                     {
                     match('-'); if (state.failed) return ;
 
@@ -431,7 +431,7 @@
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1698:10: ( '0' .. '9' )+
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:10: ( '0' .. '9' )+
             int cnt6=0;
             loop6:
             do {
@@ -445,7 +445,7 @@
 
                 switch (alt6) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1698:11: '0' .. '9'
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (state.failed) return ;
 
@@ -463,7 +463,7 @@
             } while (true);
 
             match('.'); if (state.failed) return ;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1698:26: ( '0' .. '9' )+
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:26: ( '0' .. '9' )+
             int cnt7=0;
             loop7:
             do {
@@ -477,7 +477,7 @@
 
                 switch (alt7) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1698:27: '0' .. '9'
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:27: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (state.failed) return ;
 
@@ -510,7 +510,7 @@
         try {
             int _type = STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1702:5: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1709:5: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -529,13 +529,13 @@
             }
             switch (alt10) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1702: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:1702:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1702:9: '\"' ( 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 | ~ ( '\\\\' | '\"' ) )* '\"'
                     {
                     match('\"'); if (state.failed) return ;
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1702:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1709:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
                     loop8:
                     do {
                         int alt8=3;
@@ -551,14 +551,14 @@
 
                         switch (alt8) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1702:15: EscapeSequence
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1709:15: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (state.failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1702:32: ~ ( '\\\\' | '\"' )
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/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)<='\uFFFF') ) {
                     	        input.consume();
@@ -587,13 +587,13 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1703: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:1703:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1703:9: '\\'' ( 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 | ~ ( '\\\\' | '\\'' ) )* '\\''
                     {
                     match('\''); if (state.failed) return ;
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1703:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1710:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
                     loop9:
                     do {
                         int alt9=3;
@@ -609,14 +609,14 @@
 
                         switch (alt9) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1703:16: EscapeSequence
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1710:16: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (state.failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1703:33: ~ ( '\\\\' | '\\'' )
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/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)<='\uFFFF') ) {
                     	        input.consume();
@@ -657,8 +657,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:1707:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1707:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
+            // /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' )
             {
             if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||(input.LA(1)>='a' && input.LA(1)<='f') ) {
                 input.consume();
@@ -682,7 +682,7 @@
     // $ANTLR start "EscapeSequence"
     public final void mEscapeSequence() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1711:5: ( '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' ) | UnicodeEscape | OctalEscape )
+            // /Users/porcelli/Documents/dev/drools-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 )
             int alt11=3;
             int LA11_0 = input.LA(1);
 
@@ -769,7 +769,7 @@
             }
             switch (alt11) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1711:9: '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' )
+                    // /Users/porcelli/Documents/dev/drools-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' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' )
                     {
                     match('\\'); if (state.failed) return ;
                     if ( input.LA(1)=='\"'||input.LA(1)=='$'||(input.LA(1)>='&' && input.LA(1)<='+')||(input.LA(1)>='-' && input.LA(1)<='.')||input.LA(1)=='?'||(input.LA(1)>='A' && input.LA(1)<='B')||(input.LA(1)>='D' && input.LA(1)<='E')||input.LA(1)=='G'||input.LA(1)=='Q'||input.LA(1)=='S'||input.LA(1)=='W'||(input.LA(1)>='Z' && input.LA(1)<='^')||(input.LA(1)>='a' && input.LA(1)<='f')||(input.LA(1)>='n' && input.LA(1)<='p')||(input.LA(1)>='r' && input.LA(1)<='t')||(input.LA(1)>='w' && input.LA(1)<='x')||(input.LA(1)>='z' && input.LA(1)<='}') ) {
@@ -786,14 +786,14 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1715:9: UnicodeEscape
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1722:9: UnicodeEscape
                     {
                     mUnicodeEscape(); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1716:9: OctalEscape
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1723:9: OctalEscape
                     {
                     mOctalEscape(); if (state.failed) return ;
 
@@ -810,7 +810,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:1721:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
+            // /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' ) )
             int alt12=3;
             int LA12_0 = input.LA(1);
 
@@ -858,25 +858,25 @@
             }
             switch (alt12) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1721:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (state.failed) return ;
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1721:14: ( '0' .. '3' )
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1721:15: '0' .. '3'
+                    // /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'
                     {
                     matchRange('0','3'); if (state.failed) return ;
 
                     }
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1721:25: ( '0' .. '7' )
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1721:26: '0' .. '7'
+                    // /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'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
                     }
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1721:36: ( '0' .. '7' )
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1721:37: '0' .. '7'
+                    // /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'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
@@ -886,18 +886,18 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1722:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1729:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (state.failed) return ;
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1722:14: ( '0' .. '7' )
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1722:15: '0' .. '7'
+                    // /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'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
                     }
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1722:25: ( '0' .. '7' )
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1722:26: '0' .. '7'
+                    // /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'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
@@ -907,11 +907,11 @@
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1723:9: '\\\\' ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1730:9: '\\\\' ( '0' .. '7' )
                     {
                     match('\\'); if (state.failed) return ;
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1723:14: ( '0' .. '7' )
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1723:15: '0' .. '7'
+                    // /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'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
@@ -931,8 +931,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:1728:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
+            // /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
             {
             match('\\'); if (state.failed) return ;
             match('u'); if (state.failed) return ;
@@ -954,10 +954,10 @@
         try {
             int _type = BOOL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1732:2: ( ( 'true' | 'false' ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1732:4: ( 'true' | 'false' )
+            // /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' )
             {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1732:4: ( 'true' | 'false' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1739:4: ( 'true' | 'false' )
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -976,7 +976,7 @@
             }
             switch (alt13) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1732:5: 'true'
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1739:5: 'true'
                     {
                     match("true"); if (state.failed) return ;
 
@@ -984,7 +984,7 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1732:12: 'false'
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1739:12: 'false'
                     {
                     match("false"); if (state.failed) return ;
 
@@ -1010,8 +1010,8 @@
         try {
             int _type = ACCUMULATE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1736:2: ( 'accumulate' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1736:4: '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'
             {
             match("accumulate"); if (state.failed) return ;
 
@@ -1031,8 +1031,8 @@
         try {
             int _type = COLLECT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1740:2: ( 'collect' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1740:4: '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'
             {
             match("collect"); if (state.failed) return ;
 
@@ -1052,8 +1052,8 @@
         try {
             int _type = END;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1743:5: ( 'end' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1743:7: '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'
             {
             match("end"); if (state.failed) return ;
 
@@ -1073,8 +1073,8 @@
         try {
             int _type = FROM;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1747:2: ( 'from' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1747:4: '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'
             {
             match("from"); if (state.failed) return ;
 
@@ -1094,8 +1094,8 @@
         try {
             int _type = INIT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1751:2: ( 'init' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1751:4: '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'
             {
             match("init"); if (state.failed) return ;
 
@@ -1115,8 +1115,8 @@
         try {
             int _type = NULL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1755:2: ( 'null' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1755:4: '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'
             {
             match("null"); if (state.failed) return ;
 
@@ -1136,8 +1136,8 @@
         try {
             int _type = OVER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1759:2: ( 'over' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1759:4: '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'
             {
             match("over"); if (state.failed) return ;
 
@@ -1157,8 +1157,8 @@
         try {
             int _type = THEN;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1763:2: ( 'then' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1763:4: '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'
             {
             match("then"); if (state.failed) return ;
 
@@ -1178,8 +1178,8 @@
         try {
             int _type = WHEN;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1767:2: ( 'when' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1767:4: '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'
             {
             match("when"); if (state.failed) return ;
 
@@ -1199,8 +1199,8 @@
         try {
             int _type = GRAVE_ACCENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1771:2: ( '`' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1771:4: '`'
+            // /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: '`'
             {
             match('`'); if (state.failed) return ;
 
@@ -1219,8 +1219,8 @@
         try {
             int _type = AT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1774:4: ( '@' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1774:6: '@'
+            // /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: '@'
             {
             match('@'); if (state.failed) return ;
 
@@ -1239,8 +1239,8 @@
         try {
             int _type = EQUALS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /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: '='
+            // /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: '='
             {
             match('='); if (state.failed) return ;
 
@@ -1259,8 +1259,8 @@
         try {
             int _type = SEMICOLON;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1782:2: ( ';' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1782:4: ';'
+            // /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: ';'
             {
             match(';'); if (state.failed) return ;
 
@@ -1279,8 +1279,8 @@
         try {
             int _type = DOT_STAR;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1786:2: ( '.*' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1786:4: '.*'
+            // /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: '.*'
             {
             match(".*"); if (state.failed) return ;
 
@@ -1300,8 +1300,8 @@
         try {
             int _type = COLON;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1790:2: ( ':' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1790:4: ':'
+            // /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: ':'
             {
             match(':'); if (state.failed) return ;
 
@@ -1320,8 +1320,8 @@
         try {
             int _type = EQUAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1794:2: ( '==' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1794:4: '=='
+            // /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: '=='
             {
             match("=="); if (state.failed) return ;
 
@@ -1341,8 +1341,8 @@
         try {
             int _type = NOT_EQUAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1798:2: ( '!=' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1798:4: '!='
+            // /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: '!='
             {
             match("!="); if (state.failed) return ;
 
@@ -1362,8 +1362,8 @@
         try {
             int _type = GREATER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1802:2: ( '>' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1802:4: '>'
+            // /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: '>'
             {
             match('>'); if (state.failed) return ;
 
@@ -1382,8 +1382,8 @@
         try {
             int _type = GREATER_EQUAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1806:2: ( '>=' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1806:4: '>='
+            // /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: '>='
             {
             match(">="); if (state.failed) return ;
 
@@ -1403,8 +1403,8 @@
         try {
             int _type = LESS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1810:2: ( '<' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1810:4: '<'
+            // /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: '<'
             {
             match('<'); if (state.failed) return ;
 
@@ -1423,8 +1423,8 @@
         try {
             int _type = LESS_EQUAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1814:2: ( '<=' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1814:4: '<='
+            // /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: '<='
             {
             match("<="); if (state.failed) return ;
 
@@ -1444,8 +1444,8 @@
         try {
             int _type = ARROW;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1818:2: ( '->' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1818:4: '->'
+            // /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: '->'
             {
             match("->"); if (state.failed) return ;
 
@@ -1465,7 +1465,7 @@
         try {
             int _type = ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1822: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' )+ '%' )
+            // /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' )+ '%' )
             int alt16=2;
             int LA16_0 = input.LA(1);
 
@@ -1484,7 +1484,7 @@
             }
             switch (alt16) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1822:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
+                    // /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' )*
                     {
                     if ( input.LA(1)=='$'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z')||(input.LA(1)>='\u00C0' && input.LA(1)<='\u00FF') ) {
                         input.consume();
@@ -1496,7 +1496,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1822:50: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
+                    // /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' )*
                     loop14:
                     do {
                         int alt14=2;
@@ -1534,7 +1534,7 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1823:4: '%' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+ '%'
+                    // /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' )+ '%'
                     {
                     match('%'); if (state.failed) return ;
                     if ( input.LA(1)=='$'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z')||(input.LA(1)>='\u00C0' && input.LA(1)<='\u00FF') ) {
@@ -1547,7 +1547,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1823:54: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+
+                    // /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' )+
                     int cnt15=0;
                     loop15:
                     do {
@@ -1609,8 +1609,8 @@
         try {
             int _type = LEFT_PAREN;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1828:9: ( '(' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1828:11: '('
+            // /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: '('
             {
             match('('); if (state.failed) return ;
 
@@ -1629,8 +1629,8 @@
         try {
             int _type = RIGHT_PAREN;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1832:9: ( ')' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1832:11: ')'
+            // /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: ')'
             {
             match(')'); if (state.failed) return ;
 
@@ -1649,8 +1649,8 @@
         try {
             int _type = LEFT_SQUARE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1836:9: ( '[' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1836:11: '['
+            // /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: '['
             {
             match('['); if (state.failed) return ;
 
@@ -1669,8 +1669,8 @@
         try {
             int _type = RIGHT_SQUARE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1840:9: ( ']' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1840:11: ']'
+            // /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: ']'
             {
             match(']'); if (state.failed) return ;
 
@@ -1689,8 +1689,8 @@
         try {
             int _type = LEFT_CURLY;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1844:9: ( '{' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1844:11: '{'
+            // /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: '{'
             {
             match('{'); if (state.failed) return ;
 
@@ -1709,8 +1709,8 @@
         try {
             int _type = RIGHT_CURLY;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1848:9: ( '}' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1848:11: '}'
+            // /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: '}'
             {
             match('}'); if (state.failed) return ;
 
@@ -1729,8 +1729,8 @@
         try {
             int _type = COMMA;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1851:7: ( ',' )
-            // /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:1858:7: ( ',' )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1858:9: ','
             {
             match(','); if (state.failed) return ;
 
@@ -1749,8 +1749,8 @@
         try {
             int _type = DOT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1854:5: ( '.' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1854:7: '.'
+            // /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: '.'
             {
             match('.'); if (state.failed) return ;
 
@@ -1769,8 +1769,8 @@
         try {
             int _type = DOUBLE_AMPER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1858:2: ( '&&' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1858:4: '&&'
+            // /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: '&&'
             {
             match("&&"); if (state.failed) return ;
 
@@ -1790,8 +1790,8 @@
         try {
             int _type = DOUBLE_PIPE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1862:2: ( '||' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1862:4: '||'
+            // /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: '||'
             {
             match("||"); if (state.failed) return ;
 
@@ -1811,11 +1811,11 @@
         try {
             int _type = SH_STYLE_SINGLE_LINE_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1866:2: ( '#' ( options {greedy=false; } : . )* EOL )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1866:4: '#' ( options {greedy=false; } : . )* EOL
+            // /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
             {
             match('#'); if (state.failed) return ;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1866:8: ( options {greedy=false; } : . )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1873:8: ( options {greedy=false; } : . )*
             loop17:
             do {
                 int alt17=2;
@@ -1834,7 +1834,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1866:35: .
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1873:35: .
             	    {
             	    matchAny(); if (state.failed) return ;
 
@@ -1866,12 +1866,12 @@
         try {
             int _type = C_STYLE_SINGLE_LINE_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1872:2: ( '//' ( options {greedy=false; } : . )* EOL )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1872:4: '//' ( options {greedy=false; } : . )* EOL
+            // /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
             {
             match("//"); if (state.failed) return ;
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1872:9: ( options {greedy=false; } : . )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1879:9: ( options {greedy=false; } : . )*
             loop18:
             do {
                 int alt18=2;
@@ -1890,7 +1890,7 @@
 
                 switch (alt18) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1872:36: .
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1879:36: .
             	    {
             	    matchAny(); if (state.failed) return ;
 
@@ -1922,12 +1922,12 @@
         try {
             int _type = MULTI_LINE_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1877:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1877:4: '/*' ( options {greedy=false; } : . )* '*/'
+            // /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; } : . )* '*/'
             {
             match("/*"); if (state.failed) return ;
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1877:9: ( options {greedy=false; } : . )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1884:9: ( options {greedy=false; } : . )*
             loop19:
             do {
                 int alt19=2;
@@ -1952,7 +1952,7 @@
 
                 switch (alt19) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1877:35: .
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1884:35: .
             	    {
             	    matchAny(); if (state.failed) return ;
 
@@ -1985,7 +1985,7 @@
         try {
             int _type = MISC;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1881:7: ( '!' | '$' | '%' | '^' | '*' | '_' | '-' | '+' | '?' | '/' | '\\'' | '\\\\' | '|' | '&' )
+            // /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:
             {
             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)=='|' ) {
@@ -2315,8 +2315,8 @@
 
     // $ANTLR start synpred1_DRL
     public final void synpred1_DRL_fragment() throws RecognitionException {   
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1687:14: ( '\\r\\n' )
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1687:16: '\\r\\n'
+        // /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'
         {
         match("\r\n"); if (state.failed) return ;
 

Modified: labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
===================================================================
--- labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2008-11-24 23:31:46 UTC (rev 24077)
+++ labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2008-11-25 00:10:23 UTC (rev 24078)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2008-11-24 14:42:03
+// $ANTLR 3.1.1 /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2008-11-24 22:04:04
 
 	package org.drools.lang;
 	
@@ -4313,7 +4313,7 @@
 
 
 
-         pushParaphrases(DroolsParaphraseTypes.RULE_ATTRIBUTE); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.RULE_ATTRIBUTE); 
+         boolean isFailed = true; pushParaphrases(DroolsParaphraseTypes.RULE_ATTRIBUTE); 
         try {
             // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:713:2: ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect )
             int alt37=12;
@@ -4497,7 +4497,7 @@
             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
             }
             if ( state.backtracking==0 ) {
-               paraphrases.pop(); if (!(retval.tree instanceof CommonErrorNode)) emit(Location.LOCATION_RULE_HEADER); 
+               paraphrases.pop(); isFailed = false; if (!(retval.tree instanceof CommonErrorNode)) emit(Location.LOCATION_RULE_HEADER); 
             }
         }
         catch (RecognitionException re) {
@@ -4507,6 +4507,14 @@
 
         }
         finally {
+
+            	if (isEditorInterfaceEnabled && isFailed) {
+            		if (input.LA(2) == EOF && input.LA(1) == ID){
+            			emit(input.LT(1), DroolsEditorType.IDENTIFIER);
+            			input.consume();
+            		}
+            	}
+
         }
         return retval;
     }
@@ -4518,7 +4526,7 @@
     };
 
     // $ANTLR start "date_effective"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:727:1: date_effective : date_effective_key STRING ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:734:1: date_effective : date_effective_key STRING ;
     public final DRLParser.date_effective_return date_effective() throws RecognitionException {
         DRLParser.date_effective_return retval = new DRLParser.date_effective_return();
         retval.start = input.LT(1);
@@ -4532,12 +4540,12 @@
         Object STRING96_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:728:2: ( date_effective_key STRING )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:728:4: date_effective_key STRING
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:735:2: ( date_effective_key STRING )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:735:4: date_effective_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_date_effective_key_in_date_effective1715);
+            pushFollow(FOLLOW_date_effective_key_in_date_effective1718);
             date_effective_key95=date_effective_key();
 
             state._fsp--;
@@ -4546,7 +4554,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING96=(Token)match(input,STRING,FOLLOW_STRING_in_date_effective1720); if (state.failed) return retval;
+            STRING96=(Token)match(input,STRING,FOLLOW_STRING_in_date_effective1723); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             STRING96_tree = (Object)adaptor.create(STRING96);
             adaptor.addChild(root_0, STRING96_tree);
@@ -4583,7 +4591,7 @@
     };
 
     // $ANTLR start "date_expires"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:732:1: date_expires : date_expires_key STRING ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:739:1: date_expires : date_expires_key STRING ;
     public final DRLParser.date_expires_return date_expires() throws RecognitionException {
         DRLParser.date_expires_return retval = new DRLParser.date_expires_return();
         retval.start = input.LT(1);
@@ -4597,12 +4605,12 @@
         Object STRING98_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:733:2: ( date_expires_key STRING )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:733:4: date_expires_key STRING
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:740:2: ( date_expires_key STRING )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:740:4: date_expires_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_date_expires_key_in_date_expires1734);
+            pushFollow(FOLLOW_date_expires_key_in_date_expires1737);
             date_expires_key97=date_expires_key();
 
             state._fsp--;
@@ -4611,7 +4619,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING98=(Token)match(input,STRING,FOLLOW_STRING_in_date_expires1739); if (state.failed) return retval;
+            STRING98=(Token)match(input,STRING,FOLLOW_STRING_in_date_expires1742); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             STRING98_tree = (Object)adaptor.create(STRING98);
             adaptor.addChild(root_0, STRING98_tree);
@@ -4648,7 +4656,7 @@
     };
 
     // $ANTLR start "enabled"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:737:1: enabled : enabled_key ( BOOL | paren_chunk ) ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:744:1: enabled : enabled_key ( BOOL | paren_chunk ) ;
     public final DRLParser.enabled_return enabled() throws RecognitionException {
         DRLParser.enabled_return retval = new DRLParser.enabled_return();
         retval.start = input.LT(1);
@@ -4664,12 +4672,12 @@
         Object BOOL100_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:738:2: ( enabled_key ( BOOL | paren_chunk ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:738:4: enabled_key ( BOOL | paren_chunk )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:745:2: ( enabled_key ( BOOL | paren_chunk ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:745:4: enabled_key ( BOOL | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_enabled_key_in_enabled1754);
+            pushFollow(FOLLOW_enabled_key_in_enabled1757);
             enabled_key99=enabled_key();
 
             state._fsp--;
@@ -4678,7 +4686,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:739:6: ( BOOL | paren_chunk )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:746:6: ( BOOL | paren_chunk )
             int alt38=2;
             int LA38_0 = input.LA(1);
 
@@ -4697,9 +4705,9 @@
             }
             switch (alt38) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:739:8: BOOL
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:746:8: BOOL
                     {
-                    BOOL100=(Token)match(input,BOOL,FOLLOW_BOOL_in_enabled1767); if (state.failed) return retval;
+                    BOOL100=(Token)match(input,BOOL,FOLLOW_BOOL_in_enabled1770); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     BOOL100_tree = (Object)adaptor.create(BOOL100);
                     adaptor.addChild(root_0, BOOL100_tree);
@@ -4711,9 +4719,9 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:740:8: paren_chunk
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:747:8: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_enabled1778);
+                    pushFollow(FOLLOW_paren_chunk_in_enabled1781);
                     paren_chunk101=paren_chunk();
 
                     state._fsp--;
@@ -4754,7 +4762,7 @@
     };
 
     // $ANTLR start "salience"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:744:1: salience : salience_key ( INT | paren_chunk ) ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:751:1: salience : salience_key ( INT | paren_chunk ) ;
     public final DRLParser.salience_return salience() throws RecognitionException {
         DRLParser.salience_return retval = new DRLParser.salience_return();
         retval.start = input.LT(1);
@@ -4770,12 +4778,12 @@
         Object INT103_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:745:2: ( salience_key ( INT | paren_chunk ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:745:4: salience_key ( INT | paren_chunk )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:752:2: ( salience_key ( INT | paren_chunk ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:752:4: salience_key ( INT | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_salience_key_in_salience1798);
+            pushFollow(FOLLOW_salience_key_in_salience1801);
             salience_key102=salience_key();
 
             state._fsp--;
@@ -4784,7 +4792,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:746:3: ( INT | paren_chunk )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:753:3: ( INT | paren_chunk )
             int alt39=2;
             int LA39_0 = input.LA(1);
 
@@ -4803,9 +4811,9 @@
             }
             switch (alt39) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:746:5: INT
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:753:5: INT
                     {
-                    INT103=(Token)match(input,INT,FOLLOW_INT_in_salience1807); if (state.failed) return retval;
+                    INT103=(Token)match(input,INT,FOLLOW_INT_in_salience1810); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     INT103_tree = (Object)adaptor.create(INT103);
                     adaptor.addChild(root_0, INT103_tree);
@@ -4817,9 +4825,9 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:747:5: paren_chunk
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:754:5: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_salience1816);
+                    pushFollow(FOLLOW_paren_chunk_in_salience1819);
                     paren_chunk104=paren_chunk();
 
                     state._fsp--;
@@ -4860,7 +4868,7 @@
     };
 
     // $ANTLR start "no_loop"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:751:1: no_loop : no_loop_key ( BOOL )? ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:758:1: no_loop : no_loop_key ( BOOL )? ;
     public final DRLParser.no_loop_return no_loop() throws RecognitionException {
         DRLParser.no_loop_return retval = new DRLParser.no_loop_return();
         retval.start = input.LT(1);
@@ -4874,12 +4882,12 @@
         Object BOOL106_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:752:2: ( no_loop_key ( BOOL )? )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:752:4: no_loop_key ( BOOL )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:759:2: ( no_loop_key ( BOOL )? )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:759:4: no_loop_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_no_loop_key_in_no_loop1831);
+            pushFollow(FOLLOW_no_loop_key_in_no_loop1834);
             no_loop_key105=no_loop_key();
 
             state._fsp--;
@@ -4888,7 +4896,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:752:66: ( BOOL )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:759:66: ( BOOL )?
             int alt40=2;
             int LA40_0 = input.LA(1);
 
@@ -4897,9 +4905,9 @@
             }
             switch (alt40) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:752:66: BOOL
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:759:66: BOOL
                     {
-                    BOOL106=(Token)match(input,BOOL,FOLLOW_BOOL_in_no_loop1836); if (state.failed) return retval;
+                    BOOL106=(Token)match(input,BOOL,FOLLOW_BOOL_in_no_loop1839); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     BOOL106_tree = (Object)adaptor.create(BOOL106);
                     adaptor.addChild(root_0, BOOL106_tree);
@@ -4942,7 +4950,7 @@
     };
 
     // $ANTLR start "auto_focus"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:756:1: auto_focus : auto_focus_key ( BOOL )? ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:763:1: auto_focus : auto_focus_key ( BOOL )? ;
     public final DRLParser.auto_focus_return auto_focus() throws RecognitionException {
         DRLParser.auto_focus_return retval = new DRLParser.auto_focus_return();
         retval.start = input.LT(1);
@@ -4956,12 +4964,12 @@
         Object BOOL108_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:757:2: ( auto_focus_key ( BOOL )? )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:757:4: auto_focus_key ( BOOL )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:2: ( auto_focus_key ( BOOL )? )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:4: auto_focus_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_auto_focus_key_in_auto_focus1851);
+            pushFollow(FOLLOW_auto_focus_key_in_auto_focus1854);
             auto_focus_key107=auto_focus_key();
 
             state._fsp--;
@@ -4970,7 +4978,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:757:69: ( BOOL )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:69: ( BOOL )?
             int alt41=2;
             int LA41_0 = input.LA(1);
 
@@ -4979,9 +4987,9 @@
             }
             switch (alt41) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:757:69: BOOL
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:69: BOOL
                     {
-                    BOOL108=(Token)match(input,BOOL,FOLLOW_BOOL_in_auto_focus1856); if (state.failed) return retval;
+                    BOOL108=(Token)match(input,BOOL,FOLLOW_BOOL_in_auto_focus1859); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     BOOL108_tree = (Object)adaptor.create(BOOL108);
                     adaptor.addChild(root_0, BOOL108_tree);
@@ -5024,7 +5032,7 @@
     };
 
     // $ANTLR start "activation_group"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:761:1: activation_group : activation_group_key STRING ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:768:1: activation_group : activation_group_key STRING ;
     public final DRLParser.activation_group_return activation_group() throws RecognitionException {
         DRLParser.activation_group_return retval = new DRLParser.activation_group_return();
         retval.start = input.LT(1);
@@ -5038,12 +5046,12 @@
         Object STRING110_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:762:2: ( activation_group_key STRING )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:762:4: activation_group_key STRING
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:769:2: ( activation_group_key STRING )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:769:4: activation_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_activation_group_key_in_activation_group1873);
+            pushFollow(FOLLOW_activation_group_key_in_activation_group1876);
             activation_group_key109=activation_group_key();
 
             state._fsp--;
@@ -5052,7 +5060,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING110=(Token)match(input,STRING,FOLLOW_STRING_in_activation_group1878); if (state.failed) return retval;
+            STRING110=(Token)match(input,STRING,FOLLOW_STRING_in_activation_group1881); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             STRING110_tree = (Object)adaptor.create(STRING110);
             adaptor.addChild(root_0, STRING110_tree);
@@ -5089,7 +5097,7 @@
     };
 
     // $ANTLR start "ruleflow_group"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:766:1: ruleflow_group : ruleflow_group_key STRING ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:773:1: ruleflow_group : ruleflow_group_key STRING ;
     public final DRLParser.ruleflow_group_return ruleflow_group() throws RecognitionException {
         DRLParser.ruleflow_group_return retval = new DRLParser.ruleflow_group_return();
         retval.start = input.LT(1);
@@ -5103,12 +5111,12 @@
         Object STRING112_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:767:2: ( ruleflow_group_key STRING )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:767:4: ruleflow_group_key STRING
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:774:2: ( ruleflow_group_key STRING )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:774:4: ruleflow_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_ruleflow_group_key_in_ruleflow_group1892);
+            pushFollow(FOLLOW_ruleflow_group_key_in_ruleflow_group1895);
             ruleflow_group_key111=ruleflow_group_key();
 
             state._fsp--;
@@ -5117,7 +5125,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING112=(Token)match(input,STRING,FOLLOW_STRING_in_ruleflow_group1897); if (state.failed) return retval;
+            STRING112=(Token)match(input,STRING,FOLLOW_STRING_in_ruleflow_group1900); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             STRING112_tree = (Object)adaptor.create(STRING112);
             adaptor.addChild(root_0, STRING112_tree);
@@ -5154,7 +5162,7 @@
     };
 
     // $ANTLR start "agenda_group"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:771:1: agenda_group : agenda_group_key STRING ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:778:1: agenda_group : agenda_group_key STRING ;
     public final DRLParser.agenda_group_return agenda_group() throws RecognitionException {
         DRLParser.agenda_group_return retval = new DRLParser.agenda_group_return();
         retval.start = input.LT(1);
@@ -5168,12 +5176,12 @@
         Object STRING114_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:772:2: ( agenda_group_key STRING )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:772:4: agenda_group_key STRING
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:779:2: ( agenda_group_key STRING )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:779:4: agenda_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_agenda_group_key_in_agenda_group1911);
+            pushFollow(FOLLOW_agenda_group_key_in_agenda_group1914);
             agenda_group_key113=agenda_group_key();
 
             state._fsp--;
@@ -5182,7 +5190,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING114=(Token)match(input,STRING,FOLLOW_STRING_in_agenda_group1916); if (state.failed) return retval;
+            STRING114=(Token)match(input,STRING,FOLLOW_STRING_in_agenda_group1919); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             STRING114_tree = (Object)adaptor.create(STRING114);
             adaptor.addChild(root_0, STRING114_tree);
@@ -5219,7 +5227,7 @@
     };
 
     // $ANTLR start "duration"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:776:1: duration : duration_key INT ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:783:1: duration : duration_key INT ;
     public final DRLParser.duration_return duration() throws RecognitionException {
         DRLParser.duration_return retval = new DRLParser.duration_return();
         retval.start = input.LT(1);
@@ -5233,12 +5241,12 @@
         Object INT116_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:777:2: ( duration_key INT )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:777:4: duration_key INT
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:784:2: ( duration_key INT )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:784:4: duration_key INT
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_duration_key_in_duration1930);
+            pushFollow(FOLLOW_duration_key_in_duration1933);
             duration_key115=duration_key();
 
             state._fsp--;
@@ -5247,7 +5255,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            INT116=(Token)match(input,INT,FOLLOW_INT_in_duration1935); if (state.failed) return retval;
+            INT116=(Token)match(input,INT,FOLLOW_INT_in_duration1938); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             INT116_tree = (Object)adaptor.create(INT116);
             adaptor.addChild(root_0, INT116_tree);
@@ -5284,7 +5292,7 @@
     };
 
     // $ANTLR start "dialect"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:781:1: dialect : dialect_key STRING ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:788:1: dialect : dialect_key STRING ;
     public final DRLParser.dialect_return dialect() throws RecognitionException {
         DRLParser.dialect_return retval = new DRLParser.dialect_return();
         retval.start = input.LT(1);
@@ -5298,12 +5306,12 @@
         Object STRING118_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:782:2: ( dialect_key STRING )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:782:4: dialect_key STRING
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:789:2: ( dialect_key STRING )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:789:4: dialect_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_dialect_key_in_dialect1951);
+            pushFollow(FOLLOW_dialect_key_in_dialect1954);
             dialect_key117=dialect_key();
 
             state._fsp--;
@@ -5312,7 +5320,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING118=(Token)match(input,STRING,FOLLOW_STRING_in_dialect1956); if (state.failed) return retval;
+            STRING118=(Token)match(input,STRING,FOLLOW_STRING_in_dialect1959); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             STRING118_tree = (Object)adaptor.create(STRING118);
             adaptor.addChild(root_0, STRING118_tree);
@@ -5349,7 +5357,7 @@
     };
 
     // $ANTLR start "lock_on_active"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:786:1: lock_on_active : lock_on_active_key ( BOOL )? ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:793:1: lock_on_active : lock_on_active_key ( BOOL )? ;
     public final DRLParser.lock_on_active_return lock_on_active() throws RecognitionException {
         DRLParser.lock_on_active_return retval = new DRLParser.lock_on_active_return();
         retval.start = input.LT(1);
@@ -5363,12 +5371,12 @@
         Object BOOL120_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:787:2: ( lock_on_active_key ( BOOL )? )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:787:4: lock_on_active_key ( BOOL )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:794:2: ( lock_on_active_key ( BOOL )? )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:794:4: lock_on_active_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_lock_on_active_key_in_lock_on_active1974);
+            pushFollow(FOLLOW_lock_on_active_key_in_lock_on_active1977);
             lock_on_active_key119=lock_on_active_key();
 
             state._fsp--;
@@ -5377,7 +5385,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:787:73: ( BOOL )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:794:73: ( BOOL )?
             int alt42=2;
             int LA42_0 = input.LA(1);
 
@@ -5386,9 +5394,9 @@
             }
             switch (alt42) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:787:73: BOOL
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:794:73: BOOL
                     {
-                    BOOL120=(Token)match(input,BOOL,FOLLOW_BOOL_in_lock_on_active1979); if (state.failed) return retval;
+                    BOOL120=(Token)match(input,BOOL,FOLLOW_BOOL_in_lock_on_active1982); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     BOOL120_tree = (Object)adaptor.create(BOOL120);
                     adaptor.addChild(root_0, BOOL120_tree);
@@ -5431,7 +5439,7 @@
     };
 
     // $ANTLR start "normal_lhs_block"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:791:1: normal_lhs_block : ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:798:1: normal_lhs_block : ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) ;
     public final DRLParser.normal_lhs_block_return normal_lhs_block() throws RecognitionException {
         DRLParser.normal_lhs_block_return retval = new DRLParser.normal_lhs_block_return();
         retval.start = input.LT(1);
@@ -5443,10 +5451,10 @@
 
         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:792:2: ( ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:792:4: ( lhs )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:799:2: ( ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:799:4: ( lhs )*
             {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:792:4: ( lhs )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:799:4: ( lhs )*
             loop43:
             do {
                 int alt43=2;
@@ -5459,9 +5467,9 @@
 
                 switch (alt43) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:792:4: lhs
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:799:4: lhs
             	    {
-            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block1994);
+            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block1997);
             	    lhs121=lhs();
 
             	    state._fsp--;
@@ -5489,14 +5497,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 793:2: -> ^( VT_AND_IMPLICIT ( lhs )* )
+            // 800:2: -> ^( VT_AND_IMPLICIT ( lhs )* )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:793:5: ^( VT_AND_IMPLICIT ( lhs )* )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:800:5: ^( VT_AND_IMPLICIT ( lhs )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_AND_IMPLICIT, "VT_AND_IMPLICIT"), root_1);
 
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:793:23: ( lhs )*
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:800:23: ( lhs )*
                 while ( stream_lhs.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs.nextTree());
 
@@ -5537,7 +5545,7 @@
     };
 
     // $ANTLR start "lhs"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:796:1: lhs : lhs_or ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:803:1: lhs : lhs_or ;
     public final DRLParser.lhs_return lhs() throws RecognitionException {
         DRLParser.lhs_return retval = new DRLParser.lhs_return();
         retval.start = input.LT(1);
@@ -5549,12 +5557,12 @@
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:796:5: ( lhs_or )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:796:7: lhs_or
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:803:5: ( lhs_or )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:803:7: lhs_or
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_lhs_or_in_lhs2015);
+            pushFollow(FOLLOW_lhs_or_in_lhs2018);
             lhs_or122=lhs_or();
 
             state._fsp--;
@@ -5589,7 +5597,7 @@
     };
 
     // $ANTLR start "lhs_or"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:799: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 ) )* );
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:806:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );
     public final DRLParser.lhs_or_return lhs_or() throws RecognitionException {
         DRLParser.lhs_or_return retval = new DRLParser.lhs_or_return();
         retval.start = input.LT(1);
@@ -5622,7 +5630,7 @@
         	Token orToken = null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:802: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 ) )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:809: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 alt47=2;
             int LA47_0 = input.LA(1);
 
@@ -5655,15 +5663,15 @@
             }
             switch (alt47) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:802:5: ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:809:5: ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN
                     {
-                    LEFT_PAREN123=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2039); if (state.failed) return retval; 
+                    LEFT_PAREN123=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2042); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN123);
 
                     if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN123, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_or_key_in_lhs_or2049);
+                    pushFollow(FOLLOW_or_key_in_lhs_or2052);
                     or=or_key();
 
                     state._fsp--;
@@ -5672,7 +5680,7 @@
                     if ( state.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:806:4: ( lhs_and )+
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:813:4: ( lhs_and )+
                     int cnt44=0;
                     loop44:
                     do {
@@ -5686,9 +5694,9 @@
 
                         switch (alt44) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:806:4: lhs_and
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:813:4: lhs_and
                     	    {
-                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2057);
+                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2060);
                     	    lhs_and124=lhs_and();
 
                     	    state._fsp--;
@@ -5708,7 +5716,7 @@
                         cnt44++;
                     } while (true);
 
-                    RIGHT_PAREN125=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2063); if (state.failed) return retval; 
+                    RIGHT_PAREN125=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2066); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN125);
 
                     if ( state.backtracking==0 ) {
@@ -5727,9 +5735,9 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 808:3: -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN )
+                    // 815: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:808:6: ^( 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:815:6: ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_OR_PREFIX, (or!=null?((Token)or.start):null)), root_1);
@@ -5753,12 +5761,12 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:809: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:816: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:809:4: ( lhs_and -> lhs_and )
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:809:5: lhs_and
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:816:4: ( lhs_and -> lhs_and )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:816:5: lhs_and
                     {
-                    pushFollow(FOLLOW_lhs_and_in_lhs_or2086);
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2089);
                     lhs_and126=lhs_and();
 
                     state._fsp--;
@@ -5777,7 +5785,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 809:13: -> lhs_and
+                    // 816:13: -> lhs_and
                     {
                         adaptor.addChild(root_0, stream_lhs_and.nextTree());
 
@@ -5786,7 +5794,7 @@
                     retval.tree = root_0;}
                     }
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:810:3: ( ( 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:817:3: ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )*
                     loop46:
                     do {
                         int alt46=2;
@@ -5814,9 +5822,9 @@
 
                         switch (alt46) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:810: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:817: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:810:28: (value= or_key | pipe= DOUBLE_PIPE )
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:817:28: (value= or_key | pipe= DOUBLE_PIPE )
                     	    int alt45=2;
                     	    int LA45_0 = input.LA(1);
 
@@ -5835,9 +5843,9 @@
                     	    }
                     	    switch (alt45) {
                     	        case 1 :
-                    	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:810:29: value= or_key
+                    	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:817:29: value= or_key
                     	            {
-                    	            pushFollow(FOLLOW_or_key_in_lhs_or2108);
+                    	            pushFollow(FOLLOW_or_key_in_lhs_or2111);
                     	            value=or_key();
 
                     	            state._fsp--;
@@ -5850,9 +5858,9 @@
                     	            }
                     	            break;
                     	        case 2 :
-                    	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:810:69: pipe= DOUBLE_PIPE
+                    	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:817:69: pipe= DOUBLE_PIPE
                     	            {
-                    	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_lhs_or2115); if (state.failed) return retval; 
+                    	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_lhs_or2118); if (state.failed) return retval; 
                     	            if ( state.backtracking==0 ) stream_DOUBLE_PIPE.add(pipe);
 
                     	            if ( state.backtracking==0 ) {
@@ -5867,7 +5875,7 @@
                     	    if ( state.backtracking==0 ) {
                     	      	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     	    }
-                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2126);
+                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2129);
                     	    lhs_and127=lhs_and();
 
                     	    state._fsp--;
@@ -5886,9 +5894,9 @@
                     	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     	    root_0 = (Object)adaptor.nil();
-                    	    // 813:3: -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and )
+                    	    // 820: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:813:6: ^( VT_OR_INFIX[orToken] $lhs_or lhs_and )
+                    	        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:820:6: ^( VT_OR_INFIX[orToken] $lhs_or lhs_and )
                     	        {
                     	        Object root_1 = (Object)adaptor.nil();
                     	        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_OR_INFIX, orToken), root_1);
@@ -5941,7 +5949,7 @@
     };
 
     // $ANTLR start "lhs_and"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:816: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 ) )* );
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:823:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );
     public final DRLParser.lhs_and_return lhs_and() throws RecognitionException {
         DRLParser.lhs_and_return retval = new DRLParser.lhs_and_return();
         retval.start = input.LT(1);
@@ -5974,7 +5982,7 @@
         	Token andToken = null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:819: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 ) )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:826: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 alt51=2;
             int LA51_0 = input.LA(1);
 
@@ -6007,15 +6015,15 @@
             }
             switch (alt51) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:819:5: ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:826:5: ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN
                     {
-                    LEFT_PAREN128=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_and2167); if (state.failed) return retval; 
+                    LEFT_PAREN128=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_and2170); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN128);
 
                     if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN128, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_and_key_in_lhs_and2177);
+                    pushFollow(FOLLOW_and_key_in_lhs_and2180);
                     and=and_key();
 
                     state._fsp--;
@@ -6024,7 +6032,7 @@
                     if ( state.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:823:4: ( lhs_unary )+
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:830:4: ( lhs_unary )+
                     int cnt48=0;
                     loop48:
                     do {
@@ -6038,9 +6046,9 @@
 
                         switch (alt48) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:823:4: lhs_unary
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:830:4: lhs_unary
                     	    {
-                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2185);
+                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2188);
                     	    lhs_unary129=lhs_unary();
 
                     	    state._fsp--;
@@ -6060,7 +6068,7 @@
                         cnt48++;
                     } while (true);
 
-                    RIGHT_PAREN130=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_and2191); if (state.failed) return retval; 
+                    RIGHT_PAREN130=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_and2194); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN130);
 
                     if ( state.backtracking==0 ) {
@@ -6079,9 +6087,9 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 825:3: -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN )
+                    // 832: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:825:6: ^( 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:832:6: ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_AND_PREFIX, (and!=null?((Token)and.start):null)), root_1);
@@ -6105,12 +6113,12 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:826: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:833: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:826:4: ( lhs_unary -> lhs_unary )
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:826:5: lhs_unary
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:833:4: ( lhs_unary -> lhs_unary )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:833:5: lhs_unary
                     {
-                    pushFollow(FOLLOW_lhs_unary_in_lhs_and2215);
+                    pushFollow(FOLLOW_lhs_unary_in_lhs_and2218);
                     lhs_unary131=lhs_unary();
 
                     state._fsp--;
@@ -6129,7 +6137,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 826:15: -> lhs_unary
+                    // 833:15: -> lhs_unary
                     {
                         adaptor.addChild(root_0, stream_lhs_unary.nextTree());
 
@@ -6138,7 +6146,7 @@
                     retval.tree = root_0;}
                     }
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:827:3: ( ( 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:834:3: ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )*
                     loop50:
                     do {
                         int alt50=2;
@@ -6166,9 +6174,9 @@
 
                         switch (alt50) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:827: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:834: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:827:30: (value= and_key | amper= DOUBLE_AMPER )
+                    	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:834:30: (value= and_key | amper= DOUBLE_AMPER )
                     	    int alt49=2;
                     	    int LA49_0 = input.LA(1);
 
@@ -6187,9 +6195,9 @@
                     	    }
                     	    switch (alt49) {
                     	        case 1 :
-                    	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:827:31: value= and_key
+                    	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:834:31: value= and_key
                     	            {
-                    	            pushFollow(FOLLOW_and_key_in_lhs_and2237);
+                    	            pushFollow(FOLLOW_and_key_in_lhs_and2240);
                     	            value=and_key();
 
                     	            state._fsp--;
@@ -6202,9 +6210,9 @@
                     	            }
                     	            break;
                     	        case 2 :
-                    	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:827:73: amper= DOUBLE_AMPER
+                    	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:834:73: amper= DOUBLE_AMPER
                     	            {
-                    	            amper=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_lhs_and2244); if (state.failed) return retval; 
+                    	            amper=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_lhs_and2247); if (state.failed) return retval; 
                     	            if ( state.backtracking==0 ) stream_DOUBLE_AMPER.add(amper);
 
                     	            if ( state.backtracking==0 ) {
@@ -6219,7 +6227,7 @@
                     	    if ( state.backtracking==0 ) {
                     	      	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     	    }
-                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2255);
+                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2258);
                     	    lhs_unary132=lhs_unary();
 
                     	    state._fsp--;
@@ -6238,9 +6246,9 @@
                     	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     	    root_0 = (Object)adaptor.nil();
-                    	    // 830:3: -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary )
+                    	    // 837: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:830:6: ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary )
+                    	        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:837:6: ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary )
                     	        {
                     	        Object root_1 = (Object)adaptor.nil();
                     	        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_AND_INFIX, andToken), root_1);
@@ -6293,7 +6301,7 @@
     };
 
     // $ANTLR start "lhs_unary"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:833:1: lhs_unary : ( 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:840:1: lhs_unary : ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? ;
     public final DRLParser.lhs_unary_return lhs_unary() throws RecognitionException {
         DRLParser.lhs_unary_return retval = new DRLParser.lhs_unary_return();
         retval.start = input.LT(1);
@@ -6323,12 +6331,12 @@
         Object SEMICOLON142_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:834: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:834:4: ( 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:841: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:841: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:834:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )
             int alt52=7;
             int LA52_0 = input.LA(1);
 
@@ -6373,9 +6381,9 @@
             }
             switch (alt52) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:834:6: lhs_exist
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:6: lhs_exist
                     {
-                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary2286);
+                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary2289);
                     lhs_exist133=lhs_exist();
 
                     state._fsp--;
@@ -6385,13 +6393,13 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:835:4: {...}? => lhs_not_binding
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:842:4: {...}? => lhs_not_binding
                     {
                     if ( !((validateNotWithBinding())) ) {
                         if (state.backtracking>0) {state.failed=true; return retval;}
                         throw new FailedPredicateException(input, "lhs_unary", "validateNotWithBinding()");
                     }
-                    pushFollow(FOLLOW_lhs_not_binding_in_lhs_unary2294);
+                    pushFollow(FOLLOW_lhs_not_binding_in_lhs_unary2297);
                     lhs_not_binding134=lhs_not_binding();
 
                     state._fsp--;
@@ -6401,9 +6409,9 @@
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:836:5: lhs_not
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:843:5: lhs_not
                     {
-                    pushFollow(FOLLOW_lhs_not_in_lhs_unary2300);
+                    pushFollow(FOLLOW_lhs_not_in_lhs_unary2303);
                     lhs_not135=lhs_not();
 
                     state._fsp--;
@@ -6413,9 +6421,9 @@
                     }
                     break;
                 case 4 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:837:5: lhs_eval
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:844:5: lhs_eval
                     {
-                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary2306);
+                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary2309);
                     lhs_eval136=lhs_eval();
 
                     state._fsp--;
@@ -6425,9 +6433,9 @@
                     }
                     break;
                 case 5 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:838:5: lhs_forall
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:845:5: lhs_forall
                     {
-                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary2312);
+                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary2315);
                     lhs_forall137=lhs_forall();
 
                     state._fsp--;
@@ -6437,19 +6445,19 @@
                     }
                     break;
                 case 6 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:839:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:846:5: LEFT_PAREN lhs_or RIGHT_PAREN
                     {
-                    LEFT_PAREN138=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary2318); if (state.failed) return retval;
+                    LEFT_PAREN138=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary2321); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN138, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_unary2329);
+                    pushFollow(FOLLOW_lhs_or_in_lhs_unary2332);
                     lhs_or139=lhs_or();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_or139.getTree());
-                    RIGHT_PAREN140=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary2335); if (state.failed) return retval;
+                    RIGHT_PAREN140=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary2338); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     RIGHT_PAREN140_tree = (Object)adaptor.create(RIGHT_PAREN140);
                     adaptor.addChild(root_0, RIGHT_PAREN140_tree);
@@ -6461,9 +6469,9 @@
                     }
                     break;
                 case 7 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:842:5: pattern_source
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:849:5: pattern_source
                     {
-                    pushFollow(FOLLOW_pattern_source_in_lhs_unary2343);
+                    pushFollow(FOLLOW_pattern_source_in_lhs_unary2346);
                     pattern_source141=pattern_source();
 
                     state._fsp--;
@@ -6475,7 +6483,7 @@
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:844:3: ( ( SEMICOLON )=> SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:851:3: ( ( SEMICOLON )=> SEMICOLON )?
             int alt53=2;
             int LA53_0 = input.LA(1);
 
@@ -6488,9 +6496,9 @@
             }
             switch (alt53) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:844:4: ( SEMICOLON )=> SEMICOLON
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:851:4: ( SEMICOLON )=> SEMICOLON
                     {
-                    SEMICOLON142=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_lhs_unary2357); if (state.failed) return retval;
+                    SEMICOLON142=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_lhs_unary2360); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                       	emit(SEMICOLON142, DroolsEditorType.SYMBOL);	
                     }
@@ -6529,7 +6537,7 @@
     };
 
     // $ANTLR start "lhs_exist"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:847: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 )? ) ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:854:1: lhs_exist : exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) ;
     public final DRLParser.lhs_exist_return lhs_exist() throws RecognitionException {
         DRLParser.lhs_exist_return retval = new DRLParser.lhs_exist_return();
         retval.start = input.LT(1);
@@ -6555,10 +6563,10 @@
         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:848: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:848:4: exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:855: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:855: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_exist2373);
+            pushFollow(FOLLOW_exists_key_in_lhs_exist2376);
             exists_key143=exists_key();
 
             state._fsp--;
@@ -6567,7 +6575,7 @@
             if ( state.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:850:10: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:857:10: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
             int alt54=3;
             int LA54_0 = input.LA(1);
 
@@ -6614,9 +6622,9 @@
             }
             switch (alt54) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:850:12: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:857:12: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
                     {
-                    pushFollow(FOLLOW_lhs_or_in_lhs_exist2400);
+                    pushFollow(FOLLOW_lhs_or_in_lhs_exist2403);
                     lhs_or144=lhs_or();
 
                     state._fsp--;
@@ -6626,21 +6634,21 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:851:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:858:5: LEFT_PAREN lhs_or RIGHT_PAREN
                     {
-                    LEFT_PAREN145=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist2407); if (state.failed) return retval; 
+                    LEFT_PAREN145=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist2410); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN145);
 
                     if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN145, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_exist2415);
+                    pushFollow(FOLLOW_lhs_or_in_lhs_exist2418);
                     lhs_or146=lhs_or();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or146.getTree());
-                    RIGHT_PAREN147=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist2422); if (state.failed) return retval; 
+                    RIGHT_PAREN147=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist2425); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN147);
 
                     if ( state.backtracking==0 ) {
@@ -6650,9 +6658,9 @@
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:854:12: lhs_pattern
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:861:12: lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_exist2437);
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_exist2440);
                     lhs_pattern148=lhs_pattern();
 
                     state._fsp--;
@@ -6677,26 +6685,26 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 856:10: -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+            // 863: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:856:13: ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:863: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:856:26: ( lhs_or )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:863:26: ( lhs_or )?
                 if ( stream_lhs_or.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_or.nextTree());
 
                 }
                 stream_lhs_or.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:856:34: ( lhs_pattern )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:863:34: ( lhs_pattern )?
                 if ( stream_lhs_pattern.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_pattern.nextTree());
 
                 }
                 stream_lhs_pattern.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:856:47: ( RIGHT_PAREN )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:863:47: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
                     adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
@@ -6737,7 +6745,7 @@
     };
 
     // $ANTLR start "lhs_not_binding"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:859:1: lhs_not_binding : 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:866:1: lhs_not_binding : not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) ;
     public final DRLParser.lhs_not_binding_return lhs_not_binding() throws RecognitionException {
         DRLParser.lhs_not_binding_return retval = new DRLParser.lhs_not_binding_return();
         retval.start = input.LT(1);
@@ -6752,16 +6760,16 @@
         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:860: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:860:4: not_key fact_binding
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:867: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:867:4: not_key fact_binding
             {
-            pushFollow(FOLLOW_not_key_in_lhs_not_binding2483);
+            pushFollow(FOLLOW_not_key_in_lhs_not_binding2486);
             not_key149=not_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_not_key.add(not_key149.getTree());
-            pushFollow(FOLLOW_fact_binding_in_lhs_not_binding2485);
+            pushFollow(FOLLOW_fact_binding_in_lhs_not_binding2488);
             fact_binding150=fact_binding();
 
             state._fsp--;
@@ -6780,14 +6788,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 861:2: -> ^( not_key ^( VT_PATTERN fact_binding ) )
+            // 868:2: -> ^( not_key ^( VT_PATTERN fact_binding ) )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:861:5: ^( not_key ^( VT_PATTERN fact_binding ) )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:868: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:861:15: ^( VT_PATTERN fact_binding )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:868:15: ^( VT_PATTERN fact_binding )
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PATTERN, "VT_PATTERN"), root_2);
@@ -6831,7 +6839,7 @@
     };
 
     // $ANTLR start "lhs_not"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:864: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 )? ) ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871:1: lhs_not : not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) ;
     public final DRLParser.lhs_not_return lhs_not() throws RecognitionException {
         DRLParser.lhs_not_return retval = new DRLParser.lhs_not_return();
         retval.start = input.LT(1);
@@ -6857,10 +6865,10 @@
         RewriteRuleSubtreeStream stream_not_key=new RewriteRuleSubtreeStream(adaptor,"rule not_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:864: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:864:11: not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871: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:871: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_not2508);
+            pushFollow(FOLLOW_not_key_in_lhs_not2511);
             not_key151=not_key();
 
             state._fsp--;
@@ -6869,7 +6877,7 @@
             if ( state.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:866:3: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:873:3: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
             int alt55=3;
             int LA55_0 = input.LA(1);
 
@@ -6916,12 +6924,12 @@
             }
             switch (alt55) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:866:5: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:873:5: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
                     {
                     if ( state.backtracking==0 ) {
                       	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_not2530);
+                    pushFollow(FOLLOW_lhs_or_in_lhs_not2533);
                     lhs_or152=lhs_or();
 
                     state._fsp--;
@@ -6931,21 +6939,21 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:867:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:5: LEFT_PAREN lhs_or RIGHT_PAREN
                     {
-                    LEFT_PAREN153=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not2537); if (state.failed) return retval; 
+                    LEFT_PAREN153=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not2540); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN153);
 
                     if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN153, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_not2546);
+                    pushFollow(FOLLOW_lhs_or_in_lhs_not2549);
                     lhs_or154=lhs_or();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or154.getTree());
-                    RIGHT_PAREN155=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not2552); if (state.failed) return retval; 
+                    RIGHT_PAREN155=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not2555); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN155);
 
                     if ( state.backtracking==0 ) {
@@ -6955,9 +6963,9 @@
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:870:6: lhs_pattern
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:877:6: lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_not2562);
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_not2565);
                     lhs_pattern156=lhs_pattern();
 
                     state._fsp--;
@@ -6982,26 +6990,26 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 871:10: -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+            // 878: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:871:13: ^( 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: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:871:23: ( lhs_or )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:878:23: ( lhs_or )?
                 if ( stream_lhs_or.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_or.nextTree());
 
                 }
                 stream_lhs_or.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871:31: ( lhs_pattern )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:878:31: ( lhs_pattern )?
                 if ( stream_lhs_pattern.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_pattern.nextTree());
 
                 }
                 stream_lhs_pattern.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871:44: ( RIGHT_PAREN )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:878:44: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
                     adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
@@ -7042,7 +7050,7 @@
     };
 
     // $ANTLR start "lhs_eval"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:1: lhs_eval : 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:881:1: lhs_eval : ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) ;
     public final DRLParser.lhs_eval_return lhs_eval() throws RecognitionException {
         DRLParser.lhs_eval_return retval = new DRLParser.lhs_eval_return();
         retval.start = input.LT(1);
@@ -7057,10 +7065,10 @@
         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:875: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:875:4: ev= eval_key pc= paren_chunk
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:882: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:882:4: ev= eval_key pc= paren_chunk
             {
-            pushFollow(FOLLOW_eval_key_in_lhs_eval2601);
+            pushFollow(FOLLOW_eval_key_in_lhs_eval2604);
             ev=eval_key();
 
             state._fsp--;
@@ -7069,7 +7077,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_EVAL);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_lhs_eval2610);
+            pushFollow(FOLLOW_paren_chunk_in_lhs_eval2613);
             pc=paren_chunk();
 
             state._fsp--;
@@ -7098,9 +7106,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 884:3: -> ^( eval_key paren_chunk )
+            // 891:3: -> ^( eval_key paren_chunk )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:884:6: ^( eval_key paren_chunk )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:891:6: ^( eval_key paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_eval_key.nextNode(), root_1);
@@ -7141,7 +7149,7 @@
     };
 
     // $ANTLR start "lhs_forall"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:887:1: lhs_forall : 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:894:1: lhs_forall : forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN ) ;
     public final DRLParser.lhs_forall_return lhs_forall() throws RecognitionException {
         DRLParser.lhs_forall_return retval = new DRLParser.lhs_forall_return();
         retval.start = input.LT(1);
@@ -7162,22 +7170,22 @@
         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:888: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:888:4: forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:895: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:895:4: forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN
             {
-            pushFollow(FOLLOW_forall_key_in_lhs_forall2637);
+            pushFollow(FOLLOW_forall_key_in_lhs_forall2640);
             forall_key157=forall_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_forall_key.add(forall_key157.getTree());
-            LEFT_PAREN158=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forall2642); if (state.failed) return retval; 
+            LEFT_PAREN158=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forall2645); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN158);
 
             if ( state.backtracking==0 ) {
               	emit(LEFT_PAREN158, DroolsEditorType.SYMBOL);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:890:4: ( lhs_pattern )+
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:897:4: ( lhs_pattern )+
             int cnt56=0;
             loop56:
             do {
@@ -7191,9 +7199,9 @@
 
                 switch (alt56) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:890:4: lhs_pattern
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:897:4: lhs_pattern
             	    {
-            	    pushFollow(FOLLOW_lhs_pattern_in_lhs_forall2650);
+            	    pushFollow(FOLLOW_lhs_pattern_in_lhs_forall2653);
             	    lhs_pattern159=lhs_pattern();
 
             	    state._fsp--;
@@ -7213,7 +7221,7 @@
                 cnt56++;
             } while (true);
 
-            RIGHT_PAREN160=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall2656); if (state.failed) return retval; 
+            RIGHT_PAREN160=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall2659); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN160);
 
             if ( state.backtracking==0 ) {
@@ -7232,9 +7240,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 892:3: -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN )
+            // 899:3: -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:892:6: ^( forall_key ( lhs_pattern )+ RIGHT_PAREN )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:899:6: ^( forall_key ( lhs_pattern )+ RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_forall_key.nextNode(), root_1);
@@ -7283,7 +7291,7 @@
     };
 
     // $ANTLR start "pattern_source"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:895:1: pattern_source : 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:902:1: pattern_source : lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? ;
     public final DRLParser.pattern_source_return pattern_source() throws RecognitionException {
         DRLParser.pattern_source_return retval = new DRLParser.pattern_source_return();
         retval.start = input.LT(1);
@@ -7308,18 +7316,18 @@
 
          boolean isFailed = true;	
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:898: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:898:4: 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:905: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:905: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_source2692);
+            pushFollow(FOLLOW_lhs_pattern_in_pattern_source2695);
             lhs_pattern161=lhs_pattern();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_pattern161.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:899:3: ( over_clause )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:906:3: ( over_clause )?
             int alt57=2;
             int LA57_0 = input.LA(1);
 
@@ -7328,9 +7336,9 @@
             }
             switch (alt57) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:899:3: over_clause
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:906:3: over_clause
                     {
-                    pushFollow(FOLLOW_over_clause_in_pattern_source2696);
+                    pushFollow(FOLLOW_over_clause_in_pattern_source2699);
                     over_clause162=over_clause();
 
                     state._fsp--;
@@ -7342,7 +7350,7 @@
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:900:3: ( 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:907:3: ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
             int alt59=2;
             int LA59_0 = input.LA(1);
 
@@ -7351,9 +7359,9 @@
             }
             switch (alt59) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:4: 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:908:4: FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
                     {
-                    FROM163=(Token)match(input,FROM,FOLLOW_FROM_in_pattern_source2706); if (state.failed) return retval;
+                    FROM163=(Token)match(input,FROM,FOLLOW_FROM_in_pattern_source2709); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     FROM163_tree = (Object)adaptor.create(FROM163);
                     root_0 = (Object)adaptor.becomeRoot(FROM163_tree, root_0);
@@ -7362,7 +7370,7 @@
                       	emit(FROM163, DroolsEditorType.KEYWORD);
                       			emit(Location.LOCATION_LHS_FROM);	
                     }
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:904:11: ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:911:11: ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
                     int alt58=4;
                     switch ( input.LA(1) ) {
                     case ACCUMULATE:
@@ -7404,9 +7412,9 @@
 
                     switch (alt58) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:904:14: accumulate_statement
+                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:911:14: accumulate_statement
                             {
-                            pushFollow(FOLLOW_accumulate_statement_in_pattern_source2726);
+                            pushFollow(FOLLOW_accumulate_statement_in_pattern_source2729);
                             accumulate_statement164=accumulate_statement();
 
                             state._fsp--;
@@ -7416,9 +7424,9 @@
                             }
                             break;
                         case 2 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:905:15: collect_statement
+                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:912:15: collect_statement
                             {
-                            pushFollow(FOLLOW_collect_statement_in_pattern_source2742);
+                            pushFollow(FOLLOW_collect_statement_in_pattern_source2745);
                             collect_statement165=collect_statement();
 
                             state._fsp--;
@@ -7428,9 +7436,9 @@
                             }
                             break;
                         case 3 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:906:15: entrypoint_statement
+                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:15: entrypoint_statement
                             {
-                            pushFollow(FOLLOW_entrypoint_statement_in_pattern_source2759);
+                            pushFollow(FOLLOW_entrypoint_statement_in_pattern_source2762);
                             entrypoint_statement166=entrypoint_statement();
 
                             state._fsp--;
@@ -7440,9 +7448,9 @@
                             }
                             break;
                         case 4 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:907:15: from_source
+                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:914:15: from_source
                             {
-                            pushFollow(FOLLOW_from_source_in_pattern_source2775);
+                            pushFollow(FOLLOW_from_source_in_pattern_source2778);
                             from_source167=from_source();
 
                             state._fsp--;
@@ -7505,7 +7513,7 @@
     };
 
     // $ANTLR start "over_clause"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:925:1: over_clause : OVER over_elements ( COMMA over_elements )* ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:1: over_clause : OVER over_elements ( COMMA over_elements )* ;
     public final DRLParser.over_clause_return over_clause() throws RecognitionException {
         DRLParser.over_clause_return retval = new DRLParser.over_clause_return();
         retval.start = input.LT(1);
@@ -7523,12 +7531,12 @@
         Object COMMA170_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:926:2: ( OVER over_elements ( COMMA over_elements )* )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:926:4: OVER over_elements ( COMMA over_elements )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:933:2: ( OVER over_elements ( COMMA over_elements )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:933:4: OVER over_elements ( COMMA over_elements )*
             {
             root_0 = (Object)adaptor.nil();
 
-            OVER168=(Token)match(input,OVER,FOLLOW_OVER_in_over_clause2807); if (state.failed) return retval;
+            OVER168=(Token)match(input,OVER,FOLLOW_OVER_in_over_clause2810); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             OVER168_tree = (Object)adaptor.create(OVER168);
             root_0 = (Object)adaptor.becomeRoot(OVER168_tree, root_0);
@@ -7536,13 +7544,13 @@
             if ( state.backtracking==0 ) {
               	emit(OVER168, DroolsEditorType.KEYWORD);	
             }
-            pushFollow(FOLLOW_over_elements_in_over_clause2812);
+            pushFollow(FOLLOW_over_elements_in_over_clause2815);
             over_elements169=over_elements();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) adaptor.addChild(root_0, over_elements169.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:927:4: ( COMMA over_elements )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:934:4: ( COMMA over_elements )*
             loop60:
             do {
                 int alt60=2;
@@ -7567,13 +7575,13 @@
 
                 switch (alt60) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:927:5: COMMA over_elements
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:934:5: COMMA over_elements
             	    {
-            	    COMMA170=(Token)match(input,COMMA,FOLLOW_COMMA_in_over_clause2819); if (state.failed) return retval;
+            	    COMMA170=(Token)match(input,COMMA,FOLLOW_COMMA_in_over_clause2822); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
             	      	emit(COMMA170, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_over_elements_in_over_clause2824);
+            	    pushFollow(FOLLOW_over_elements_in_over_clause2827);
             	    over_elements171=over_elements();
 
             	    state._fsp--;
@@ -7617,7 +7625,7 @@
     };
 
     // $ANTLR start "over_elements"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:930:1: over_elements : 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:937:1: over_elements : id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) ;
     public final DRLParser.over_elements_return over_elements() throws RecognitionException {
         DRLParser.over_elements_return retval = new DRLParser.over_elements_return();
         retval.start = input.LT(1);
@@ -7637,28 +7645,28 @@
         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:931: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:931:4: id1= ID COLON id2= ID paren_chunk
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:938: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:938:4: id1= ID COLON id2= ID paren_chunk
             {
-            id1=(Token)match(input,ID,FOLLOW_ID_in_over_elements2839); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_over_elements2842); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
             if ( state.backtracking==0 ) {
               	emit(id1, DroolsEditorType.IDENTIFIER);	
             }
-            COLON172=(Token)match(input,COLON,FOLLOW_COLON_in_over_elements2846); if (state.failed) return retval; 
+            COLON172=(Token)match(input,COLON,FOLLOW_COLON_in_over_elements2849); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_COLON.add(COLON172);
 
             if ( state.backtracking==0 ) {
               	emit(COLON172, DroolsEditorType.SYMBOL);	
             }
-            id2=(Token)match(input,ID,FOLLOW_ID_in_over_elements2855); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_over_elements2858); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
               	emit(id2, DroolsEditorType.IDENTIFIER);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_over_elements2862);
+            pushFollow(FOLLOW_paren_chunk_in_over_elements2865);
             paren_chunk173=paren_chunk();
 
             state._fsp--;
@@ -7679,9 +7687,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 935:2: -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
+            // 942:2: -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:935:5: ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:942:5: ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_BEHAVIOR, "VT_BEHAVIOR"), root_1);
@@ -7724,7 +7732,7 @@
     };
 
     // $ANTLR start "accumulate_statement"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:938: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 ) ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:945:1: accumulate_statement : ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN ) ;
     public final DRLParser.accumulate_statement_return accumulate_statement() throws RecognitionException {
         DRLParser.accumulate_statement_return retval = new DRLParser.accumulate_statement_return();
         retval.start = input.LT(1);
@@ -7754,10 +7762,10 @@
         RewriteRuleSubtreeStream stream_accumulate_init_clause=new RewriteRuleSubtreeStream(adaptor,"rule accumulate_init_clause");
         RewriteRuleSubtreeStream stream_accumulate_id_clause=new RewriteRuleSubtreeStream(adaptor,"rule accumulate_id_clause");
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:939: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:939:4: ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:946: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:946:4: ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN
             {
-            ACCUMULATE174=(Token)match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_accumulate_statement2888); if (state.failed) return retval; 
+            ACCUMULATE174=(Token)match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_accumulate_statement2891); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ACCUMULATE.add(ACCUMULATE174);
 
             if ( state.backtracking==0 ) {
@@ -7766,19 +7774,19 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_ACCUMULATE);	
             }
-            LEFT_PAREN175=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_statement2897); if (state.failed) return retval; 
+            LEFT_PAREN175=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_statement2900); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN175);
 
             if ( state.backtracking==0 ) {
               	emit(LEFT_PAREN175, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_lhs_or_in_accumulate_statement2905);
+            pushFollow(FOLLOW_lhs_or_in_accumulate_statement2908);
             lhs_or176=lhs_or();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or176.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:943:3: ( COMMA )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:950:3: ( COMMA )?
             int alt61=2;
             int LA61_0 = input.LA(1);
 
@@ -7787,9 +7795,9 @@
             }
             switch (alt61) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:943:3: COMMA
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:950:3: COMMA
                     {
-                    COMMA177=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement2910); if (state.failed) return retval; 
+                    COMMA177=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement2913); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_COMMA.add(COMMA177);
 
 
@@ -7801,7 +7809,7 @@
             if ( state.backtracking==0 ) {
               	emit(COMMA177, DroolsEditorType.SYMBOL);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:944:3: ( accumulate_init_clause | accumulate_id_clause )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:951:3: ( accumulate_init_clause | accumulate_id_clause )
             int alt62=2;
             int LA62_0 = input.LA(1);
 
@@ -7820,9 +7828,9 @@
             }
             switch (alt62) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:944:5: accumulate_init_clause
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:951:5: accumulate_init_clause
                     {
-                    pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_statement2920);
+                    pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_statement2923);
                     accumulate_init_clause178=accumulate_init_clause();
 
                     state._fsp--;
@@ -7832,9 +7840,9 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:945:5: accumulate_id_clause
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:952:5: accumulate_id_clause
                     {
-                    pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_statement2926);
+                    pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_statement2929);
                     accumulate_id_clause179=accumulate_id_clause();
 
                     state._fsp--;
@@ -7846,7 +7854,7 @@
 
             }
 
-            RIGHT_PAREN180=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_statement2934); if (state.failed) return retval; 
+            RIGHT_PAREN180=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_statement2937); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN180);
 
             if ( state.backtracking==0 ) {
@@ -7868,21 +7876,21 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 949:3: -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
+            // 956: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:949:6: ^( 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:956:6: ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_ACCUMULATE.nextNode(), root_1);
 
                 adaptor.addChild(root_1, stream_lhs_or.nextTree());
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:949:26: ( accumulate_init_clause )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:956:26: ( accumulate_init_clause )?
                 if ( stream_accumulate_init_clause.hasNext() ) {
                     adaptor.addChild(root_1, stream_accumulate_init_clause.nextTree());
 
                 }
                 stream_accumulate_init_clause.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:949:50: ( accumulate_id_clause )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:956:50: ( accumulate_id_clause )?
                 if ( stream_accumulate_id_clause.hasNext() ) {
                     adaptor.addChild(root_1, stream_accumulate_id_clause.nextTree());
 
@@ -7924,7 +7932,7 @@
     };
 
     // $ANTLR start "accumulate_init_clause"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:953: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) ) ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:960: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 DRLParser.accumulate_init_clause_return accumulate_init_clause() throws RecognitionException {
         DRLParser.accumulate_init_clause_return retval = new DRLParser.accumulate_init_clause_return();
         retval.start = input.LT(1);
@@ -7962,10 +7970,10 @@
         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:956: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:956: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]
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:963: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:963: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]
             {
-            INIT181=(Token)match(input,INIT,FOLLOW_INIT_in_accumulate_init_clause2980); if (state.failed) return retval; 
+            INIT181=(Token)match(input,INIT,FOLLOW_INIT_in_accumulate_init_clause2983); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_INIT.add(INIT181);
 
             if ( state.backtracking==0 ) {
@@ -7974,13 +7982,13 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_ACCUMULATE_INIT);	
             }
-            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause2991);
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause2994);
             pc1=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE);
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_accumulate_paren_chunk.add(pc1.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:958:84: (cm1= COMMA )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:965:84: (cm1= COMMA )?
             int alt63=2;
             int LA63_0 = input.LA(1);
 
@@ -7989,9 +7997,9 @@
             }
             switch (alt63) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:958:84: cm1= COMMA
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:965:84: cm1= COMMA
                     {
-                    cm1=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause2996); if (state.failed) return retval; 
+                    cm1=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause2999); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_COMMA.add(cm1);
 
 
@@ -8004,21 +8012,21 @@
               	emit(cm1, DroolsEditorType.SYMBOL);	
             }
             if ( state.backtracking==0 ) {
-              	if (pc2 != null && ((DroolsTree) (pc2!=null?((Object)pc2.tree):null)).getText() != null) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION);	
+              	if (pc1 != null && ((DroolsTree) pc1.getTree()).getText() != null) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION);	
             }
-            pushFollow(FOLLOW_action_key_in_accumulate_init_clause3007);
+            pushFollow(FOLLOW_action_key_in_accumulate_init_clause3010);
             action_key182=action_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_action_key.add(action_key182.getTree());
-            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3011);
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3014);
             pc2=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE);
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_accumulate_paren_chunk.add(pc2.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:960:97: (cm2= COMMA )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:967:97: (cm2= COMMA )?
             int alt64=2;
             int LA64_0 = input.LA(1);
 
@@ -8027,9 +8035,9 @@
             }
             switch (alt64) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:960:97: cm2= COMMA
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:967:97: cm2= COMMA
                     {
-                    cm2=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3016); if (state.failed) return retval; 
+                    cm2=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3019); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_COMMA.add(cm2);
 
 
@@ -8042,9 +8050,9 @@
               	emit(cm2, DroolsEditorType.SYMBOL);	
             }
             if ( state.backtracking==0 ) {
-              	if (pc1 != null && ((DroolsTree) (pc1!=null?((Object)pc1.tree):null)).getText() != null && pc2 != null && ((DroolsTree) (pc2!=null?((Object)pc2.tree):null)).getText() != null ) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE);	
+              	if (pc1 != null && ((DroolsTree) pc1.getTree()).getText() != null && pc2 != null && ((DroolsTree) pc2.getTree()).getText() != null ) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:962:2: ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:969:2: ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )?
             int alt66=2;
             int LA66_0 = input.LA(1);
 
@@ -8057,21 +8065,21 @@
             }
             switch (alt66) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:962:4: reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )?
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:969:4: reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )?
                     {
-                    pushFollow(FOLLOW_reverse_key_in_accumulate_init_clause3028);
+                    pushFollow(FOLLOW_reverse_key_in_accumulate_init_clause3031);
                     reverse_key183=reverse_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_reverse_key.add(reverse_key183.getTree());
-                    pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3032);
+                    pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3035);
                     pc3=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE);
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_accumulate_paren_chunk.add(pc3.getTree());
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:962:100: (cm3= COMMA )?
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:969:100: (cm3= COMMA )?
                     int alt65=2;
                     int LA65_0 = input.LA(1);
 
@@ -8080,9 +8088,9 @@
                     }
                     switch (alt65) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:962:100: cm3= COMMA
+                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:969:100: cm3= COMMA
                             {
-                            cm3=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3037); if (state.failed) return retval; 
+                            cm3=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3040); if (state.failed) return retval; 
                             if ( state.backtracking==0 ) stream_COMMA.add(cm3);
 
 
@@ -8108,7 +8116,7 @@
               		}	
               	
             }
-            pushFollow(FOLLOW_result_key_in_accumulate_init_clause3053);
+            pushFollow(FOLLOW_result_key_in_accumulate_init_clause3056);
             res1=result_key();
 
             state._fsp--;
@@ -8117,7 +8125,7 @@
             if ( state.backtracking==0 ) {
               	emit((res1!=null?((Token)res1.start):null), DroolsEditorType.KEYWORD);	
             }
-            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3059);
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3062);
             pc4=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE);
 
             state._fsp--;
@@ -8140,14 +8148,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 971:2: -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
+            // 978: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:971:5: ^( 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:978: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((Object)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:971:33: ^( INIT $pc1)
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:978:33: ^( INIT $pc1)
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(stream_INIT.nextNode(), root_2);
@@ -8156,7 +8164,7 @@
 
                 adaptor.addChild(root_1, root_2);
                 }
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:971:46: ^( action_key $pc2)
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:978:46: ^( action_key $pc2)
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(stream_action_key.nextNode(), root_2);
@@ -8165,9 +8173,9 @@
 
                 adaptor.addChild(root_1, root_2);
                 }
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:971:65: ( ^( reverse_key $pc3) )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:978:65: ( ^( reverse_key $pc3) )?
                 if ( stream_reverse_key.hasNext()||stream_pc3.hasNext() ) {
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:971:65: ^( reverse_key $pc3)
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:978:65: ^( reverse_key $pc3)
                     {
                     Object root_2 = (Object)adaptor.nil();
                     root_2 = (Object)adaptor.becomeRoot(stream_reverse_key.nextNode(), root_2);
@@ -8180,7 +8188,7 @@
                 }
                 stream_reverse_key.reset();
                 stream_pc3.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:971:86: ^( result_key $pc4)
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:978:86: ^( result_key $pc4)
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(stream_result_key.nextNode(), root_2);
@@ -8237,7 +8245,7 @@
     };
 
     // $ANTLR start "accumulate_paren_chunk"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:984:1: accumulate_paren_chunk[int locationType] : 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:991:1: accumulate_paren_chunk[int locationType] : pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] ;
     public final DRLParser.accumulate_paren_chunk_return accumulate_paren_chunk(int locationType) throws RecognitionException {
         DRLParser.accumulate_paren_chunk_return retval = new DRLParser.accumulate_paren_chunk_return();
         retval.start = input.LT(1);
@@ -8252,10 +8260,10 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:987: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:987:5: pc= accumulate_paren_chunk_data[false,$locationType]
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:994: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:994:5: pc= accumulate_paren_chunk_data[false,$locationType]
             {
-            pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3117);
+            pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3120);
             pc=accumulate_paren_chunk_data(false, locationType);
 
             state._fsp--;
@@ -8277,7 +8285,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 988:2: -> VT_PAREN_CHUNK[$pc.start,text]
+            // 995:2: -> VT_PAREN_CHUNK[$pc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_PAREN_CHUNK, (pc!=null?((Token)pc.start):null), text));
 
@@ -8312,7 +8320,7 @@
     };
 
     // $ANTLR start "accumulate_paren_chunk_data"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:991: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 ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:998:1: accumulate_paren_chunk_data[boolean isRecursive, int locationType] : lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN ;
     public final DRLParser.accumulate_paren_chunk_data_return accumulate_paren_chunk_data(boolean isRecursive, int locationType) throws RecognitionException {
         DRLParser.accumulate_paren_chunk_data_return retval = new DRLParser.accumulate_paren_chunk_data_return();
         retval.start = input.LT(1);
@@ -8330,12 +8338,12 @@
         Object rp1_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:992: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:992:4: 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:999: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:999:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN
             {
             root_0 = (Object)adaptor.nil();
 
-            lp1=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3141); if (state.failed) return retval;
+            lp1=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3144); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             lp1_tree = (Object)adaptor.create(lp1);
             adaptor.addChild(root_0, lp1_tree);
@@ -8349,7 +8357,7 @@
               			}	
               		
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1000:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1007:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )*
             loop67:
             do {
                 int alt67=3;
@@ -8365,7 +8373,7 @@
 
                 switch (alt67) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1000:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1007: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) ) {
@@ -8386,9 +8394,9 @@
             	    }
             	    break;
             	case 2 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1000:87: accumulate_paren_chunk_data[true,-1]
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1007:87: accumulate_paren_chunk_data[true,-1]
             	    {
-            	    pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3169);
+            	    pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3172);
             	    accumulate_paren_chunk_data184=accumulate_paren_chunk_data(true, -1);
 
             	    state._fsp--;
@@ -8403,7 +8411,7 @@
                 }
             } while (true);
 
-            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3180); if (state.failed) return retval;
+            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3183); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             rp1_tree = (Object)adaptor.create(rp1);
             adaptor.addChild(root_0, rp1_tree);
@@ -8445,7 +8453,7 @@
     };
 
     // $ANTLR start "accumulate_id_clause"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1010:1: accumulate_id_clause : 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:1: accumulate_id_clause : ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) ;
     public final DRLParser.accumulate_id_clause_return accumulate_id_clause() throws RecognitionException {
         DRLParser.accumulate_id_clause_return retval = new DRLParser.accumulate_id_clause_return();
         retval.start = input.LT(1);
@@ -8460,16 +8468,16 @@
         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:1011: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:1011:4: ID paren_chunk
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1018: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:1018:4: ID paren_chunk
             {
-            ID185=(Token)match(input,ID,FOLLOW_ID_in_accumulate_id_clause3196); if (state.failed) return retval; 
+            ID185=(Token)match(input,ID,FOLLOW_ID_in_accumulate_id_clause3199); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(ID185);
 
             if ( state.backtracking==0 ) {
               	emit(ID185, DroolsEditorType.IDENTIFIER);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_accumulate_id_clause3202);
+            pushFollow(FOLLOW_paren_chunk_in_accumulate_id_clause3205);
             paren_chunk186=paren_chunk();
 
             state._fsp--;
@@ -8488,9 +8496,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1013:2: -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
+            // 1020:2: -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1013:5: ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1020:5: ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_ACCUMULATE_ID_CLAUSE, "VT_ACCUMULATE_ID_CLAUSE"), root_1);
@@ -8532,7 +8540,7 @@
     };
 
     // $ANTLR start "collect_statement"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1016:1: collect_statement : 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:1: collect_statement : COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) ;
     public final DRLParser.collect_statement_return collect_statement() throws RecognitionException {
         DRLParser.collect_statement_return retval = new DRLParser.collect_statement_return();
         retval.start = input.LT(1);
@@ -8553,10 +8561,10 @@
         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:1017: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:1017:4: COLLECT LEFT_PAREN pattern_source RIGHT_PAREN
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1024: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:1024:4: COLLECT LEFT_PAREN pattern_source RIGHT_PAREN
             {
-            COLLECT187=(Token)match(input,COLLECT,FOLLOW_COLLECT_in_collect_statement3224); if (state.failed) return retval; 
+            COLLECT187=(Token)match(input,COLLECT,FOLLOW_COLLECT_in_collect_statement3227); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_COLLECT.add(COLLECT187);
 
             if ( state.backtracking==0 ) {
@@ -8565,19 +8573,19 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_COLLECT);	
             }
-            LEFT_PAREN188=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_collect_statement3233); if (state.failed) return retval; 
+            LEFT_PAREN188=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_collect_statement3236); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN188);
 
             if ( state.backtracking==0 ) {
               	emit(LEFT_PAREN188, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_pattern_source_in_collect_statement3240);
+            pushFollow(FOLLOW_pattern_source_in_collect_statement3243);
             pattern_source189=pattern_source();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_pattern_source.add(pattern_source189.getTree());
-            RIGHT_PAREN190=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_collect_statement3245); if (state.failed) return retval; 
+            RIGHT_PAREN190=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_collect_statement3248); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN190);
 
             if ( state.backtracking==0 ) {
@@ -8599,9 +8607,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1023:2: -> ^( COLLECT pattern_source RIGHT_PAREN )
+            // 1030:2: -> ^( COLLECT pattern_source RIGHT_PAREN )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1023:5: ^( COLLECT pattern_source RIGHT_PAREN )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1030:5: ^( COLLECT pattern_source RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_COLLECT.nextNode(), root_1);
@@ -8643,7 +8651,7 @@
     };
 
     // $ANTLR start "entrypoint_statement"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1026:1: entrypoint_statement : 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:1: entrypoint_statement : entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) ;
     public final DRLParser.entrypoint_statement_return entrypoint_statement() throws RecognitionException {
         DRLParser.entrypoint_statement_return retval = new DRLParser.entrypoint_statement_return();
         retval.start = input.LT(1);
@@ -8658,10 +8666,10 @@
         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:1027: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:1027:4: entry_point_key entrypoint_id
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034: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:1034:4: entry_point_key entrypoint_id
             {
-            pushFollow(FOLLOW_entry_point_key_in_entrypoint_statement3272);
+            pushFollow(FOLLOW_entry_point_key_in_entrypoint_statement3275);
             entry_point_key191=entry_point_key();
 
             state._fsp--;
@@ -8670,7 +8678,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_COLLECT);	
             }
-            pushFollow(FOLLOW_entrypoint_id_in_entrypoint_statement3280);
+            pushFollow(FOLLOW_entrypoint_id_in_entrypoint_statement3283);
             entrypoint_id192=entrypoint_id();
 
             state._fsp--;
@@ -8692,9 +8700,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1031:2: -> ^( entry_point_key entrypoint_id )
+            // 1038:2: -> ^( entry_point_key entrypoint_id )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1031:5: ^( entry_point_key entrypoint_id )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1038:5: ^( entry_point_key entrypoint_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_entry_point_key.nextNode(), root_1);
@@ -8735,7 +8743,7 @@
     };
 
     // $ANTLR start "entrypoint_id"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:1: entrypoint_id : (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] );
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1041:1: entrypoint_id : (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] );
     public final DRLParser.entrypoint_id_return entrypoint_id() throws RecognitionException {
         DRLParser.entrypoint_id_return retval = new DRLParser.entrypoint_id_return();
         retval.start = input.LT(1);
@@ -8749,7 +8757,7 @@
         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:1035:2: (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1042:2: (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] )
             int alt68=2;
             int LA68_0 = input.LA(1);
 
@@ -8768,9 +8776,9 @@
             }
             switch (alt68) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1035:5: value= ID
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1042:5: value= ID
                     {
-                    value=(Token)match(input,ID,FOLLOW_ID_in_entrypoint_id3306); if (state.failed) return retval; 
+                    value=(Token)match(input,ID,FOLLOW_ID_in_entrypoint_id3309); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_ID.add(value);
 
                     if ( state.backtracking==0 ) {
@@ -8789,7 +8797,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1036:3: -> VT_ENTRYPOINT_ID[$value]
+                    // 1043:3: -> VT_ENTRYPOINT_ID[$value]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_ENTRYPOINT_ID, value));
 
@@ -8799,9 +8807,9 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1037:5: value= STRING
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1044:5: value= STRING
                     {
-                    value=(Token)match(input,STRING,FOLLOW_STRING_in_entrypoint_id3323); if (state.failed) return retval; 
+                    value=(Token)match(input,STRING,FOLLOW_STRING_in_entrypoint_id3326); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_STRING.add(value);
 
                     if ( state.backtracking==0 ) {
@@ -8820,7 +8828,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1038:3: -> VT_ENTRYPOINT_ID[$value]
+                    // 1045:3: -> VT_ENTRYPOINT_ID[$value]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_ENTRYPOINT_ID, value));
 
@@ -8857,7 +8865,7 @@
     };
 
     // $ANTLR start "from_source"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1041:1: from_source : 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:1: from_source : ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) ;
     public final DRLParser.from_source_return from_source() throws RecognitionException {
         DRLParser.from_source_return retval = new DRLParser.from_source_return();
         retval.start = input.LT(1);
@@ -8875,23 +8883,23 @@
         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:1042: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:1042:4: ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1049: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:1049:4: ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )?
             {
-            ID193=(Token)match(input,ID,FOLLOW_ID_in_from_source3343); if (state.failed) return retval; 
+            ID193=(Token)match(input,ID,FOLLOW_ID_in_from_source3346); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(ID193);
 
             if ( state.backtracking==0 ) {
               	emit(ID193, DroolsEditorType.IDENTIFIER);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1043:3: ( ( LEFT_PAREN )=>args= paren_chunk )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1050:3: ( ( LEFT_PAREN )=>args= paren_chunk )?
             int alt69=2;
             alt69 = dfa69.predict(input);
             switch (alt69) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1043:5: ( LEFT_PAREN )=>args= paren_chunk
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1050:5: ( LEFT_PAREN )=>args= paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_from_source3358);
+                    pushFollow(FOLLOW_paren_chunk_in_from_source3361);
                     args=paren_chunk();
 
                     state._fsp--;
@@ -8903,7 +8911,7 @@
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1044:3: ( expression_chain )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1051:3: ( expression_chain )?
             int alt70=2;
             int LA70_0 = input.LA(1);
 
@@ -8912,9 +8920,9 @@
             }
             switch (alt70) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1044:3: expression_chain
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1051:3: expression_chain
                     {
-                    pushFollow(FOLLOW_expression_chain_in_from_source3365);
+                    pushFollow(FOLLOW_expression_chain_in_from_source3368);
                     expression_chain194=expression_chain();
 
                     state._fsp--;
@@ -8946,21 +8954,21 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1050:2: -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
+            // 1057: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:1050:5: ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1057:5: ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FROM_SOURCE, "VT_FROM_SOURCE"), root_1);
 
                 adaptor.addChild(root_1, stream_ID.nextNode());
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1050:25: ( paren_chunk )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1057:25: ( paren_chunk )?
                 if ( stream_paren_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_paren_chunk.nextTree());
 
                 }
                 stream_paren_chunk.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1050:38: ( expression_chain )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1057:38: ( expression_chain )?
                 if ( stream_expression_chain.hasNext() ) {
                     adaptor.addChild(root_1, stream_expression_chain.nextTree());
 
@@ -9001,7 +9009,7 @@
     };
 
     // $ANTLR start "expression_chain"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1053:1: expression_chain : 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:1060:1: expression_chain : DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) ;
     public final DRLParser.expression_chain_return expression_chain() throws RecognitionException {
         DRLParser.expression_chain_return retval = new DRLParser.expression_chain_return();
         retval.start = input.LT(1);
@@ -9025,33 +9033,33 @@
         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:1054: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:1055:3: DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1061: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:1062:3: DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )?
             {
-            DOT195=(Token)match(input,DOT,FOLLOW_DOT_in_expression_chain3398); if (state.failed) return retval; 
+            DOT195=(Token)match(input,DOT,FOLLOW_DOT_in_expression_chain3401); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_DOT.add(DOT195);
 
             if ( state.backtracking==0 ) {
               	emit(DOT195, DroolsEditorType.IDENTIFIER);	
             }
-            ID196=(Token)match(input,ID,FOLLOW_ID_in_expression_chain3405); if (state.failed) return retval; 
+            ID196=(Token)match(input,ID,FOLLOW_ID_in_expression_chain3408); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(ID196);
 
             if ( state.backtracking==0 ) {
               	emit(ID196, DroolsEditorType.IDENTIFIER);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1057:4: ({...}? paren_chunk | square_chunk )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1064:4: ({...}? paren_chunk | square_chunk )?
             int alt71=3;
             alt71 = dfa71.predict(input);
             switch (alt71) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1058:6: {...}? paren_chunk
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1065:6: {...}? paren_chunk
                     {
                     if ( !((input.LA(1) == LEFT_PAREN)) ) {
                         if (state.backtracking>0) {state.failed=true; return retval;}
                         throw new FailedPredicateException(input, "expression_chain", "input.LA(1) == LEFT_PAREN");
                     }
-                    pushFollow(FOLLOW_paren_chunk_in_expression_chain3421);
+                    pushFollow(FOLLOW_paren_chunk_in_expression_chain3424);
                     paren_chunk197=paren_chunk();
 
                     state._fsp--;
@@ -9061,9 +9069,9 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1060:6: square_chunk
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1067:6: square_chunk
                     {
-                    pushFollow(FOLLOW_square_chunk_in_expression_chain3435);
+                    pushFollow(FOLLOW_square_chunk_in_expression_chain3438);
                     square_chunk198=square_chunk();
 
                     state._fsp--;
@@ -9075,7 +9083,7 @@
 
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1062:4: ( expression_chain )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1069:4: ( expression_chain )?
             int alt72=2;
             int LA72_0 = input.LA(1);
 
@@ -9084,9 +9092,9 @@
             }
             switch (alt72) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1062:4: expression_chain
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1069:4: expression_chain
                     {
-                    pushFollow(FOLLOW_expression_chain_in_expression_chain3446);
+                    pushFollow(FOLLOW_expression_chain_in_expression_chain3449);
                     expression_chain199=expression_chain();
 
                     state._fsp--;
@@ -9111,27 +9119,27 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1063:4: -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
+            // 1070: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:1063:7: ^( 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:1070:7: ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_EXPRESSION_CHAIN, DOT195), root_1);
 
                 adaptor.addChild(root_1, stream_ID.nextNode());
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1063:38: ( square_chunk )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1070:38: ( square_chunk )?
                 if ( stream_square_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_square_chunk.nextTree());
 
                 }
                 stream_square_chunk.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1063:52: ( paren_chunk )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1070:52: ( paren_chunk )?
                 if ( stream_paren_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_paren_chunk.nextTree());
 
                 }
                 stream_paren_chunk.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1063:65: ( expression_chain )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1070:65: ( expression_chain )?
                 if ( stream_expression_chain.hasNext() ) {
                     adaptor.addChild(root_1, stream_expression_chain.nextTree());
 
@@ -9172,7 +9180,7 @@
     };
 
     // $ANTLR start "lhs_pattern"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1066:1: lhs_pattern : ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) );
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1073:1: lhs_pattern : ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) );
     public final DRLParser.lhs_pattern_return lhs_pattern() throws RecognitionException {
         DRLParser.lhs_pattern_return retval = new DRLParser.lhs_pattern_return();
         retval.start = input.LT(1);
@@ -9187,7 +9195,7 @@
         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:1067:2: ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1074:2: ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) )
             int alt73=2;
             int LA73_0 = input.LA(1);
 
@@ -9217,9 +9225,9 @@
             }
             switch (alt73) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1067:4: fact_binding
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1074:4: fact_binding
                     {
-                    pushFollow(FOLLOW_fact_binding_in_lhs_pattern3479);
+                    pushFollow(FOLLOW_fact_binding_in_lhs_pattern3482);
                     fact_binding200=fact_binding();
 
                     state._fsp--;
@@ -9238,9 +9246,9 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1067:17: -> ^( VT_PATTERN fact_binding )
+                    // 1074:17: -> ^( VT_PATTERN fact_binding )
                     {
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1067:20: ^( VT_PATTERN fact_binding )
+                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1074:20: ^( VT_PATTERN fact_binding )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PATTERN, "VT_PATTERN"), root_1);
@@ -9256,9 +9264,9 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1068:4: fact
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1075:4: fact
                     {
-                    pushFollow(FOLLOW_fact_in_lhs_pattern3492);
+                    pushFollow(FOLLOW_fact_in_lhs_pattern3495);
                     fact201=fact();
 
                     state._fsp--;
@@ -9277,9 +9285,9 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1068:9: -> ^( VT_PATTERN fact )
+                    // 1075:9: -> ^( VT_PATTERN fact )
                     {
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1068:12: ^( VT_PATTERN fact )
+                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1075:12: ^( VT_PATTERN fact )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PATTERN, "VT_PATTERN"), root_1);
@@ -9322,7 +9330,7 @@
     };
 
     // $ANTLR start "fact_binding"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1071:1: fact_binding : 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:1: fact_binding : label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) ;
     public final DRLParser.fact_binding_return fact_binding() throws RecognitionException {
         DRLParser.fact_binding_return retval = new DRLParser.fact_binding_return();
         retval.start = input.LT(1);
@@ -9346,16 +9354,16 @@
         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:1072: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:1072:5: label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1079: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:1079:5: label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
             {
-            pushFollow(FOLLOW_label_in_fact_binding3512);
+            pushFollow(FOLLOW_label_in_fact_binding3515);
             label202=label();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_label.add(label202.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1073:3: ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1080:3: ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
             int alt74=2;
             int LA74_0 = input.LA(1);
 
@@ -9374,9 +9382,9 @@
             }
             switch (alt74) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1073:5: fact
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1080:5: fact
                     {
-                    pushFollow(FOLLOW_fact_in_fact_binding3518);
+                    pushFollow(FOLLOW_fact_in_fact_binding3521);
                     fact203=fact();
 
                     state._fsp--;
@@ -9386,21 +9394,21 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1074:6: LEFT_PAREN fact_binding_expression RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1081:6: LEFT_PAREN fact_binding_expression RIGHT_PAREN
                     {
-                    LEFT_PAREN204=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_binding3525); if (state.failed) return retval; 
+                    LEFT_PAREN204=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_binding3528); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN204);
 
                     if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN204, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_fact_binding_expression_in_fact_binding3533);
+                    pushFollow(FOLLOW_fact_binding_expression_in_fact_binding3536);
                     fact_binding_expression205=fact_binding_expression();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_fact_binding_expression.add(fact_binding_expression205.getTree());
-                    RIGHT_PAREN206=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_binding3541); if (state.failed) return retval; 
+                    RIGHT_PAREN206=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_binding3544); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN206);
 
                     if ( state.backtracking==0 ) {
@@ -9425,27 +9433,27 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1078:3: -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
+            // 1085: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:1078:6: ^( 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:1085:6: ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FACT_BINDING, "VT_FACT_BINDING"), root_1);
 
                 adaptor.addChild(root_1, stream_label.nextTree());
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1078:30: ( fact )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1085:30: ( fact )?
                 if ( stream_fact.hasNext() ) {
                     adaptor.addChild(root_1, stream_fact.nextTree());
 
                 }
                 stream_fact.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1078:36: ( fact_binding_expression )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1085:36: ( fact_binding_expression )?
                 if ( stream_fact_binding_expression.hasNext() ) {
                     adaptor.addChild(root_1, stream_fact_binding_expression.nextTree());
 
                 }
                 stream_fact_binding_expression.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1078:61: ( RIGHT_PAREN )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1085:61: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
                     adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
@@ -9486,7 +9494,7 @@
     };
 
     // $ANTLR start "fact_binding_expression"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1081:1: fact_binding_expression : ( 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:1088:1: fact_binding_expression : ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* ;
     public final DRLParser.fact_binding_expression_return fact_binding_expression() throws RecognitionException {
         DRLParser.fact_binding_expression_return retval = new DRLParser.fact_binding_expression_return();
         retval.start = input.LT(1);
@@ -9509,13 +9517,13 @@
         	Token orToken = null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1084: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:1084: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:1091: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:1091: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:1084:5: ( fact -> fact )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1084:6: fact
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1091:5: ( fact -> fact )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1091:6: fact
             {
-            pushFollow(FOLLOW_fact_in_fact_binding_expression3582);
+            pushFollow(FOLLOW_fact_in_fact_binding_expression3585);
             fact207=fact();
 
             state._fsp--;
@@ -9534,7 +9542,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1084:11: -> fact
+            // 1091:11: -> fact
             {
                 adaptor.addChild(root_0, stream_fact.nextTree());
 
@@ -9543,7 +9551,7 @@
             retval.tree = root_0;}
             }
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1084:20: ( (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:1091:20: ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
             loop76:
             do {
                 int alt76=2;
@@ -9559,9 +9567,9 @@
 
                 switch (alt76) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1084:22: (value= or_key | pipe= DOUBLE_PIPE ) fact
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1091:22: (value= or_key | pipe= DOUBLE_PIPE ) fact
             	    {
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1084:22: (value= or_key | pipe= DOUBLE_PIPE )
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1091:22: (value= or_key | pipe= DOUBLE_PIPE )
             	    int alt75=2;
             	    int LA75_0 = input.LA(1);
 
@@ -9580,9 +9588,9 @@
             	    }
             	    switch (alt75) {
             	        case 1 :
-            	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1084:23: value= or_key
+            	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1091:23: value= or_key
             	            {
-            	            pushFollow(FOLLOW_or_key_in_fact_binding_expression3594);
+            	            pushFollow(FOLLOW_or_key_in_fact_binding_expression3597);
             	            value=or_key();
 
             	            state._fsp--;
@@ -9595,9 +9603,9 @@
             	            }
             	            break;
             	        case 2 :
-            	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1084:62: pipe= DOUBLE_PIPE
+            	            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1091:62: pipe= DOUBLE_PIPE
             	            {
-            	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_binding_expression3600); if (state.failed) return retval; 
+            	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_binding_expression3603); if (state.failed) return retval; 
             	            if ( state.backtracking==0 ) stream_DOUBLE_PIPE.add(pipe);
 
             	            if ( state.backtracking==0 ) {
@@ -9609,7 +9617,7 @@
 
             	    }
 
-            	    pushFollow(FOLLOW_fact_in_fact_binding_expression3605);
+            	    pushFollow(FOLLOW_fact_in_fact_binding_expression3608);
             	    fact208=fact();
 
             	    state._fsp--;
@@ -9628,9 +9636,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1085:3: -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
+            	    // 1092: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:1085:6: ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
+            	        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1092:6: ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FACT_OR, orToken), root_1);
@@ -9681,7 +9689,7 @@
     };
 
     // $ANTLR start "fact"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1088:1: fact : 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:1095:1: fact : pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN ) ;
     public final DRLParser.fact_return fact() throws RecognitionException {
         DRLParser.fact_return retval = new DRLParser.fact_return();
         retval.start = input.LT(1);
@@ -9703,16 +9711,16 @@
         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:1091: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:1091:4: pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1098: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:1098:4: pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN
             {
-            pushFollow(FOLLOW_pattern_type_in_fact3645);
+            pushFollow(FOLLOW_pattern_type_in_fact3648);
             pattern_type209=pattern_type();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_pattern_type.add(pattern_type209.getTree());
-            LEFT_PAREN210=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact3650); if (state.failed) return retval; 
+            LEFT_PAREN210=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact3653); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN210);
 
             if ( state.backtracking==0 ) {
@@ -9721,7 +9729,7 @@
             if ( state.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:1094:4: ( constraints )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1101:4: ( constraints )?
             int alt77=2;
             int LA77_0 = input.LA(1);
 
@@ -9730,9 +9738,9 @@
             }
             switch (alt77) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1094:4: constraints
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1101:4: constraints
                     {
-                    pushFollow(FOLLOW_constraints_in_fact3661);
+                    pushFollow(FOLLOW_constraints_in_fact3664);
                     constraints211=constraints();
 
                     state._fsp--;
@@ -9744,7 +9752,7 @@
 
             }
 
-            RIGHT_PAREN212=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact3667); if (state.failed) return retval; 
+            RIGHT_PAREN212=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact3670); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN212);
 
             if ( state.backtracking==0 ) {
@@ -9769,15 +9777,15 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1100:2: -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN )
+            // 1107:2: -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1100:5: ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1107:5: ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FACT, "VT_FACT"), root_1);
 
                 adaptor.addChild(root_1, stream_pattern_type.nextTree());
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1100:28: ( constraints )?
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1107:28: ( constraints )?
                 if ( stream_constraints.hasNext() ) {
                     adaptor.addChild(root_1, stream_constraints.nextTree());
 
@@ -9829,7 +9837,7 @@
     };
 
     // $ANTLR start "constraints"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1110:1: constraints : constraint ( COMMA constraint )* ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1117:1: constraints : constraint ( COMMA constraint )* ;
     public final DRLParser.constraints_return constraints() throws RecognitionException {
         DRLParser.constraints_return retval = new DRLParser.constraints_return();
         retval.start = input.LT(1);
@@ -9845,18 +9853,18 @@
         Object COMMA214_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1111:2: ( constraint ( COMMA constraint )* )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1111:4: constraint ( COMMA constraint )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1118:2: ( constraint ( COMMA constraint )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1118:4: constraint ( COMMA constraint )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_constraint_in_constraints3701);
+            pushFollow(FOLLOW_constraint_in_constraints3704);
             constraint213=constraint();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint213.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1111:15: ( COMMA constraint )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1118:15: ( COMMA constraint )*
             loop78:
             do {
                 int alt78=2;
@@ -9869,14 +9877,14 @@
 
                 switch (alt78) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1111:17: COMMA constraint
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1118:17: COMMA constraint
             	    {
-            	    COMMA214=(Token)match(input,COMMA,FOLLOW_COMMA_in_constraints3705); if (state.failed) return retval;
+            	    COMMA214=(Token)match(input,COMMA,FOLLOW_COMMA_in_constraints3708); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
             	      	emit(COMMA214, DroolsEditorType.SYMBOL);
             	      		emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	
             	    }
-            	    pushFollow(FOLLOW_constraint_in_constraints3712);
+            	    pushFollow(FOLLOW_constraint_in_constraints3715);
             	    constraint215=constraint();
 
             	    state._fsp--;
@@ -9920,7 +9928,7 @@
     };
 
     // $ANTLR start "constraint"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1116:1: constraint : or_constr ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1123:1: constraint : or_constr ;
     public final DRLParser.constraint_return constraint() throws RecognitionException {
         DRLParser.constraint_return retval = new DRLParser.constraint_return();
         retval.start = input.LT(1);
@@ -9932,12 +9940,12 @@
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1117:2: ( or_constr )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1117:4: or_constr
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1124:2: ( or_constr )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1124:4: or_constr
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_or_constr_in_constraint3726);
+            pushFollow(FOLLOW_or_constr_in_constraint3729);
             or_constr216=or_constr();
 
             state._fsp--;
@@ -9972,7 +9980,7 @@
     };
 
     // $ANTLR start "or_constr"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1120:1: or_constr : and_constr ( DOUBLE_PIPE and_constr )* ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1127:1: or_constr : and_constr ( DOUBLE_PIPE and_constr )* ;
     public final DRLParser.or_constr_return or_constr() throws RecognitionException {
         DRLParser.or_constr_return retval = new DRLParser.or_constr_return();
         retval.start = input.LT(1);
@@ -9988,18 +9996,18 @@
         Object DOUBLE_PIPE218_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1121:2: ( and_constr ( DOUBLE_PIPE and_constr )* )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1121:4: and_constr ( DOUBLE_PIPE and_constr )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1128:2: ( and_constr ( DOUBLE_PIPE and_constr )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1128:4: and_constr ( DOUBLE_PIPE and_constr )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_and_constr_in_or_constr3737);
+            pushFollow(FOLLOW_and_constr_in_or_constr3740);
             and_constr217=and_constr();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) adaptor.addChild(root_0, and_constr217.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1121:15: ( DOUBLE_PIPE and_constr )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1128:15: ( DOUBLE_PIPE and_constr )*
             loop79:
             do {
                 int alt79=2;
@@ -10012,9 +10020,9 @@
 
                 switch (alt79) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1121:17: DOUBLE_PIPE and_constr
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1128:17: DOUBLE_PIPE and_constr
             	    {
-            	    DOUBLE_PIPE218=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_constr3741); if (state.failed) return retval;
+            	    DOUBLE_PIPE218=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_constr3744); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
             	    DOUBLE_PIPE218_tree = (Object)adaptor.create(DOUBLE_PIPE218);
             	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE218_tree, root_0);
@@ -10022,7 +10030,7 @@
             	    if ( state.backtracking==0 ) {
             	      	emit(DOUBLE_PIPE218, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_and_constr_in_or_constr3748);
+            	    pushFollow(FOLLOW_and_constr_in_or_constr3751);
             	    and_constr219=and_constr();
 
             	    state._fsp--;
@@ -10066,7 +10074,7 @@
     };
 
     // $ANTLR start "and_constr"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1125:1: and_constr : unary_constr ( DOUBLE_AMPER unary_constr )* ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1132:1: and_constr : unary_constr ( DOUBLE_AMPER unary_constr )* ;
     public final DRLParser.and_constr_return and_constr() throws RecognitionException {
         DRLParser.and_constr_return retval = new DRLParser.and_constr_return();
         retval.start = input.LT(1);
@@ -10082,18 +10090,18 @@
         Object DOUBLE_AMPER221_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1126:2: ( unary_constr ( DOUBLE_AMPER unary_constr )* )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1126:4: unary_constr ( DOUBLE_AMPER unary_constr )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1133:2: ( unary_constr ( DOUBLE_AMPER unary_constr )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1133:4: unary_constr ( DOUBLE_AMPER unary_constr )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_unary_constr_in_and_constr3763);
+            pushFollow(FOLLOW_unary_constr_in_and_constr3766);
             unary_constr220=unary_constr();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) adaptor.addChild(root_0, unary_constr220.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1126:17: ( DOUBLE_AMPER unary_constr )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1133:17: ( DOUBLE_AMPER unary_constr )*
             loop80:
             do {
                 int alt80=2;
@@ -10106,9 +10114,9 @@
 
                 switch (alt80) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1126:19: DOUBLE_AMPER unary_constr
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1133:19: DOUBLE_AMPER unary_constr
             	    {
-            	    DOUBLE_AMPER221=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_constr3767); if (state.failed) return retval;
+            	    DOUBLE_AMPER221=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_constr3770); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
             	    DOUBLE_AMPER221_tree = (Object)adaptor.create(DOUBLE_AMPER221);
             	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER221_tree, root_0);
@@ -10116,7 +10124,7 @@
             	    if ( state.backtracking==0 ) {
             	      	emit(DOUBLE_AMPER221, DroolsEditorType.SYMBOL);;	
             	    }
-            	    pushFollow(FOLLOW_unary_constr_in_and_constr3774);
+            	    pushFollow(FOLLOW_unary_constr_in_and_constr3777);
             	    unary_constr222=unary_constr();
 
             	    state._fsp--;
@@ -10160,7 +10168,7 @@
     };
 
     // $ANTLR start "unary_constr"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1130:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1137:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );
     public final DRLParser.unary_constr_return unary_constr() throws RecognitionException {
         DRLParser.unary_constr_return retval = new DRLParser.unary_constr_return();
         retval.start = input.LT(1);
@@ -10183,22 +10191,22 @@
 
          boolean isFailed = true;	
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1134:2: ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1141:2: ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN )
             int alt81=3;
             alt81 = dfa81.predict(input);
             switch (alt81) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1134:4: eval_key paren_chunk
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1141:4: eval_key paren_chunk
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_eval_key_in_unary_constr3807);
+                    pushFollow(FOLLOW_eval_key_in_unary_constr3810);
                     eval_key223=eval_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(eval_key223.getTree(), root_0);
-                    pushFollow(FOLLOW_paren_chunk_in_unary_constr3810);
+                    pushFollow(FOLLOW_paren_chunk_in_unary_constr3813);
                     paren_chunk224=paren_chunk();
 
                     state._fsp--;
@@ -10208,11 +10216,11 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1135:4: field_constraint
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1142:4: field_constraint
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_field_constraint_in_unary_constr3815);
+                    pushFollow(FOLLOW_field_constraint_in_unary_constr3818);
                     field_constraint225=field_constraint();
 
                     state._fsp--;
@@ -10222,21 +10230,21 @@
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1136:5: LEFT_PAREN or_constr RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1143:5: LEFT_PAREN or_constr RIGHT_PAREN
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    LEFT_PAREN226=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_unary_constr3821); if (state.failed) return retval;
+                    LEFT_PAREN226=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_unary_constr3824); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN226, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_or_constr_in_unary_constr3831);
+                    pushFollow(FOLLOW_or_constr_in_unary_constr3834);
                     or_constr227=or_constr();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) adaptor.addChild(root_0, or_constr227.getTree());
-                    RIGHT_PAREN228=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_unary_constr3836); if (state.failed) return retval;
+                    RIGHT_PAREN228=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_unary_constr3839); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     RIGHT_PAREN228_tree = (Object)adaptor.create(RIGHT_PAREN228);
                     adaptor.addChild(root_0, RIGHT_PAREN228_tree);
@@ -10286,7 +10294,7 @@
     };
 
     // $ANTLR start "field_constraint"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1149: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 ) );
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1156:1: field_constraint : ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) );
     public final DRLParser.field_constraint_return field_constraint() throws RecognitionException {
         DRLParser.field_constraint_return retval = new DRLParser.field_constraint_return();
         retval.start = input.LT(1);
@@ -10317,7 +10325,7 @@
         	boolean isArrow = false;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1152: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 ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1159: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 alt83=2;
             int LA83_0 = input.LA(1);
 
@@ -10347,21 +10355,21 @@
             }
             switch (alt83) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1152:5: label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )?
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1159:5: label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )?
                     {
-                    pushFollow(FOLLOW_label_in_field_constraint3856);
+                    pushFollow(FOLLOW_label_in_field_constraint3859);
                     label229=label();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_label.add(label229.getTree());
-                    pushFollow(FOLLOW_accessor_path_in_field_constraint3858);
+                    pushFollow(FOLLOW_accessor_path_in_field_constraint3861);
                     accessor_path230=accessor_path();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_accessor_path.add(accessor_path230.getTree());
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1153:3: ( or_restr_connective | arw= ARROW paren_chunk )?
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1160:3: ( or_restr_connective | arw= ARROW paren_chunk )?
                     int alt82=3;
                     int LA82_0 = input.LA(1);
 
@@ -10376,9 +10384,9 @@
                     }
                     switch (alt82) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1153:5: or_restr_connective
+                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1160:5: or_restr_connective
                             {
-                            pushFollow(FOLLOW_or_restr_connective_in_field_constraint3865);
+                            pushFollow(FOLLOW_or_restr_connective_in_field_constraint3868);
                             or_restr_connective231=or_restr_connective();
 
                             state._fsp--;
@@ -10388,15 +10396,15 @@
                             }
                             break;
                         case 2 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1153:27: arw= ARROW paren_chunk
+                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1160:27: arw= ARROW paren_chunk
                             {
-                            arw=(Token)match(input,ARROW,FOLLOW_ARROW_in_field_constraint3871); if (state.failed) return retval; 
+                            arw=(Token)match(input,ARROW,FOLLOW_ARROW_in_field_constraint3874); if (state.failed) return retval; 
                             if ( state.backtracking==0 ) stream_ARROW.add(arw);
 
                             if ( state.backtracking==0 ) {
                               	emit(arw, DroolsEditorType.SYMBOL);	
                             }
-                            pushFollow(FOLLOW_paren_chunk_in_field_constraint3875);
+                            pushFollow(FOLLOW_paren_chunk_in_field_constraint3878);
                             paren_chunk232=paren_chunk();
 
                             state._fsp--;
@@ -10424,15 +10432,15 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1154:3: -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )?
+                    // 1161: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:1154:17: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) )
+                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1161:17: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_BIND_FIELD, "VT_BIND_FIELD"), root_1);
 
                         adaptor.addChild(root_1, stream_label.nextTree());
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1154:39: ^( VT_FIELD accessor_path )
+                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1161:39: ^( VT_FIELD accessor_path )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FIELD, "VT_FIELD"), root_2);
@@ -10444,9 +10452,9 @@
 
                         adaptor.addChild(root_0, root_1);
                         }
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1154:66: ( ^( VK_EVAL[$arw] paren_chunk ) )?
+                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1161: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:1154:66: ^( VK_EVAL[$arw] paren_chunk )
+                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1161:66: ^( VK_EVAL[$arw] paren_chunk )
                             {
                             Object root_1 = (Object)adaptor.nil();
                             root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VK_EVAL, arw), root_1);
@@ -10460,21 +10468,21 @@
                         stream_paren_chunk.reset();
 
                     }
-                    else // 1155:3: -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
+                    else // 1162: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:1155:6: ^( 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:1162:6: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_BIND_FIELD, "VT_BIND_FIELD"), root_1);
 
                         adaptor.addChild(root_1, stream_label.nextTree());
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1155:28: ^( VT_FIELD accessor_path ( or_restr_connective )? )
+                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1162:28: ^( VT_FIELD accessor_path ( or_restr_connective )? )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FIELD, "VT_FIELD"), root_2);
 
                         adaptor.addChild(root_2, stream_accessor_path.nextTree());
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1155:53: ( or_restr_connective )?
+                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1162:53: ( or_restr_connective )?
                         if ( stream_or_restr_connective.hasNext() ) {
                             adaptor.addChild(root_2, stream_or_restr_connective.nextTree());
 
@@ -10493,15 +10501,15 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1156:4: accessor_path or_restr_connective
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1163:4: accessor_path or_restr_connective
                     {
-                    pushFollow(FOLLOW_accessor_path_in_field_constraint3929);
+                    pushFollow(FOLLOW_accessor_path_in_field_constraint3932);
                     accessor_path233=accessor_path();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_accessor_path.add(accessor_path233.getTree());
-                    pushFollow(FOLLOW_or_restr_connective_in_field_constraint3931);
+                    pushFollow(FOLLOW_or_restr_connective_in_field_constraint3934);
                     or_restr_connective234=or_restr_connective();
 
                     state._fsp--;
@@ -10520,9 +10528,9 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1157:3: -> ^( VT_FIELD accessor_path or_restr_connective )
+                    // 1164:3: -> ^( VT_FIELD accessor_path or_restr_connective )
                     {
-                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1157:6: ^( VT_FIELD accessor_path or_restr_connective )
+                        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1164:6: ^( VT_FIELD accessor_path or_restr_connective )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FIELD, "VT_FIELD"), root_1);
@@ -10566,7 +10574,7 @@
     };
 
     // $ANTLR start "label"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1160:1: label : value= ID COLON -> VT_LABEL[$value] ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1167:1: label : value= ID COLON -> VT_LABEL[$value] ;
     public final DRLParser.label_return label() throws RecognitionException {
         DRLParser.label_return retval = new DRLParser.label_return();
         retval.start = input.LT(1);
@@ -10582,16 +10590,16 @@
         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:1161:2: (value= ID COLON -> VT_LABEL[$value] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1161:4: value= ID COLON
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1168:2: (value= ID COLON -> VT_LABEL[$value] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1168:4: value= ID COLON
             {
-            value=(Token)match(input,ID,FOLLOW_ID_in_label3956); if (state.failed) return retval; 
+            value=(Token)match(input,ID,FOLLOW_ID_in_label3959); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(value);
 
             if ( state.backtracking==0 ) {
               	emit(value, DroolsEditorType.IDENTIFIER_VARIABLE);	
             }
-            COLON235=(Token)match(input,COLON,FOLLOW_COLON_in_label3963); if (state.failed) return retval; 
+            COLON235=(Token)match(input,COLON,FOLLOW_COLON_in_label3966); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_COLON.add(COLON235);
 
             if ( state.backtracking==0 ) {
@@ -10610,7 +10618,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1163:3: -> VT_LABEL[$value]
+            // 1170:3: -> VT_LABEL[$value]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_LABEL, value));
 
@@ -10645,7 +10653,7 @@
     };
 
     // $ANTLR start "or_restr_connective"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1166:1: or_restr_connective : 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:1: or_restr_connective : and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* ;
     public final DRLParser.or_restr_connective_return or_restr_connective() throws RecognitionException {
         DRLParser.or_restr_connective_return retval = new DRLParser.or_restr_connective_return();
         retval.start = input.LT(1);
@@ -10661,18 +10669,18 @@
         Object DOUBLE_PIPE237_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1167: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:1167:4: and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1174: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:1174:4: and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective3984);
+            pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective3987);
             and_restr_connective236=and_restr_connective();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) adaptor.addChild(root_0, and_restr_connective236.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1167:25: ({...}? => DOUBLE_PIPE and_restr_connective )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1174:25: ({...}? => DOUBLE_PIPE and_restr_connective )*
             loop84:
             do {
                 int alt84=2;
@@ -10691,13 +10699,13 @@
 
                 switch (alt84) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1167:26: {...}? => DOUBLE_PIPE and_restr_connective
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1174:26: {...}? => DOUBLE_PIPE and_restr_connective
             	    {
             	    if ( !(((validateRestr()))) ) {
             	        if (state.backtracking>0) {state.failed=true; return retval;}
             	        throw new FailedPredicateException(input, "or_restr_connective", "(validateRestr())");
             	    }
-            	    DOUBLE_PIPE237=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_restr_connective3990); if (state.failed) return retval;
+            	    DOUBLE_PIPE237=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_restr_connective3993); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
             	    DOUBLE_PIPE237_tree = (Object)adaptor.create(DOUBLE_PIPE237);
             	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE237_tree, root_0);
@@ -10705,7 +10713,7 @@
             	    if ( state.backtracking==0 ) {
             	      	emit(DOUBLE_PIPE237, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective3998);
+            	    pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective4001);
             	    and_restr_connective238=and_restr_connective();
 
             	    state._fsp--;
@@ -10754,7 +10762,7 @@
     };
 
     // $ANTLR start "and_restr_connective"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1180:1: and_restr_connective : constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1187:1: and_restr_connective : constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* ;
     public final DRLParser.and_restr_connective_return and_restr_connective() throws RecognitionException {
         DRLParser.and_restr_connective_return retval = new DRLParser.and_restr_connective_return();
         retval.start = input.LT(1);
@@ -10770,18 +10778,18 @@
         Object DOUBLE_AMPER240_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1181:2: ( constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1181:4: constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1188:2: ( constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1188:4: constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_constraint_expression_in_and_restr_connective4019);
+            pushFollow(FOLLOW_constraint_expression_in_and_restr_connective4022);
             constraint_expression239=constraint_expression();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint_expression239.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1181:26: ({...}? => DOUBLE_AMPER constraint_expression )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1188:26: ({...}? => DOUBLE_AMPER constraint_expression )*
             loop85:
             do {
                 int alt85=2;
@@ -10800,13 +10808,13 @@
 
                 switch (alt85) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1181:27: {...}? => DOUBLE_AMPER constraint_expression
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1188:27: {...}? => DOUBLE_AMPER constraint_expression
             	    {
             	    if ( !(((validateRestr()))) ) {
             	        if (state.backtracking>0) {state.failed=true; return retval;}
             	        throw new FailedPredicateException(input, "and_restr_connective", "(validateRestr())");
             	    }
-            	    DOUBLE_AMPER240=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_restr_connective4025); if (state.failed) return retval;
+            	    DOUBLE_AMPER240=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_restr_connective4028); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
             	    DOUBLE_AMPER240_tree = (Object)adaptor.create(DOUBLE_AMPER240);
             	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER240_tree, root_0);
@@ -10814,7 +10822,7 @@
             	    if ( state.backtracking==0 ) {
             	      	emit(DOUBLE_AMPER240, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_constraint_expression_in_and_restr_connective4032);
+            	    pushFollow(FOLLOW_constraint_expression_in_and_restr_connective4035);
             	    constraint_expression241=constraint_expression();
 
             	    state._fsp--;
@@ -10863,7 +10871,7 @@
     };
 
     // $ANTLR start "constraint_expression"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1194:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1201:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );
     public final DRLParser.constraint_expression_return constraint_expression() throws RecognitionException {
         DRLParser.constraint_expression_return retval = new DRLParser.constraint_expression_return();
         retval.start = input.LT(1);
@@ -10883,16 +10891,16 @@
         Object RIGHT_PAREN246_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1197:3: ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1204:3: ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN )
             int alt86=3;
             alt86 = dfa86.predict(input);
             switch (alt86) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1197:5: compound_operator
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1204:5: compound_operator
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_compound_operator_in_constraint_expression4060);
+                    pushFollow(FOLLOW_compound_operator_in_constraint_expression4063);
                     compound_operator242=compound_operator();
 
                     state._fsp--;
@@ -10902,11 +10910,11 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1198:4: simple_operator
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1205:4: simple_operator
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_simple_operator_in_constraint_expression4065);
+                    pushFollow(FOLLOW_simple_operator_in_constraint_expression4068);
                     simple_operator243=simple_operator();
 
                     state._fsp--;
@@ -10916,21 +10924,21 @@
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1199:4: LEFT_PAREN or_restr_connective RIGHT_PAREN
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1206:4: LEFT_PAREN or_restr_connective RIGHT_PAREN
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    LEFT_PAREN244=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constraint_expression4070); if (state.failed) return retval;
+                    LEFT_PAREN244=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constraint_expression4073); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN244, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_or_restr_connective_in_constraint_expression4079);
+                    pushFollow(FOLLOW_or_restr_connective_in_constraint_expression4082);
                     or_restr_connective245=or_restr_connective();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) adaptor.addChild(root_0, or_restr_connective245.getTree());
-                    RIGHT_PAREN246=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constraint_expression4084); if (state.failed) return retval;
+                    RIGHT_PAREN246=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constraint_expression4087); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     RIGHT_PAREN246_tree = (Object)adaptor.create(RIGHT_PAREN246);
                     adaptor.addChild(root_0, RIGHT_PAREN246_tree);
@@ -11006,7 +11014,7 @@
     };
 
     // $ANTLR start "simple_operator"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1245:1: simple_operator : ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) ) expression_value ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1252:1: simple_operator : ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) ) expression_value ;
     public final DRLParser.simple_operator_return simple_operator() throws RecognitionException {
         DRLParser.simple_operator_return retval = new DRLParser.simple_operator_return();
         retval.start = input.LT(1);
@@ -11037,12 +11045,12 @@
 
         if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1247:2: ( ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) ) expression_value )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1248:2: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) ) expression_value
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1254:2: ( ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) ) expression_value )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1255:2: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) ) expression_value
             {
             root_0 = (Object)adaptor.nil();
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1248:2: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1255:2: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) )
             int alt89=7;
             int LA89_0 = input.LA(1);
 
@@ -11076,9 +11084,9 @@
             }
             switch (alt89) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1249:3: EQUAL
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1256:3: EQUAL
                     {
-                    EQUAL247=(Token)match(input,EQUAL,FOLLOW_EQUAL_in_simple_operator4119); if (state.failed) return retval;
+                    EQUAL247=(Token)match(input,EQUAL,FOLLOW_EQUAL_in_simple_operator4122); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     EQUAL247_tree = (Object)adaptor.create(EQUAL247);
                     root_0 = (Object)adaptor.becomeRoot(EQUAL247_tree, root_0);
@@ -11090,9 +11098,9 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1250:4: GREATER
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1257:4: GREATER
                     {
-                    GREATER248=(Token)match(input,GREATER,FOLLOW_GREATER_in_simple_operator4127); if (state.failed) return retval;
+                    GREATER248=(Token)match(input,GREATER,FOLLOW_GREATER_in_simple_operator4130); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     GREATER248_tree = (Object)adaptor.create(GREATER248);
                     root_0 = (Object)adaptor.becomeRoot(GREATER248_tree, root_0);
@@ -11104,9 +11112,9 @@
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1251:4: GREATER_EQUAL
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1258:4: GREATER_EQUAL
                     {
-                    GREATER_EQUAL249=(Token)match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_simple_operator4135); if (state.failed) return retval;
+                    GREATER_EQUAL249=(Token)match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_simple_operator4138); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     GREATER_EQUAL249_tree = (Object)adaptor.create(GREATER_EQUAL249);
                     root_0 = (Object)adaptor.becomeRoot(GREATER_EQUAL249_tree, root_0);
@@ -11118,9 +11126,9 @@
                     }
                     break;
                 case 4 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1252:4: LESS
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1259:4: LESS
                     {
-                    LESS250=(Token)match(input,LESS,FOLLOW_LESS_in_simple_operator4143); if (state.failed) return retval;
+                    LESS250=(Token)match(input,LESS,FOLLOW_LESS_in_simple_operator4146); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     LESS250_tree = (Object)adaptor.create(LESS250);
                     root_0 = (Object)adaptor.becomeRoot(LESS250_tree, root_0);
@@ -11132,9 +11140,9 @@
                     }
                     break;
                 case 5 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1253:4: LESS_EQUAL
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1260:4: LESS_EQUAL
                     {
-                    LESS_EQUAL251=(Token)match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_simple_operator4151); if (state.failed) return retval;
+                    LESS_EQUAL251=(Token)match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_simple_operator4154); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     LESS_EQUAL251_tree = (Object)adaptor.create(LESS_EQUAL251);
                     root_0 = (Object)adaptor.becomeRoot(LESS_EQUAL251_tree, root_0);
@@ -11146,9 +11154,9 @@
                     }
                     break;
                 case 6 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1254:4: NOT_EQUAL
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1261:4: NOT_EQUAL
                     {
-                    NOT_EQUAL252=(Token)match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_simple_operator4159); if (state.failed) return retval;
+                    NOT_EQUAL252=(Token)match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_simple_operator4162); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     NOT_EQUAL252_tree = (Object)adaptor.create(NOT_EQUAL252);
                     root_0 = (Object)adaptor.becomeRoot(NOT_EQUAL252_tree, root_0);
@@ -11160,9 +11168,9 @@
                     }
                     break;
                 case 7 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1255:4: ( not_key )? ( operator_key ( square_chunk )? )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1262:4: ( not_key )? ( operator_key ( square_chunk )? )
                     {
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1255:4: ( not_key )?
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1262:4: ( not_key )?
                     int alt87=2;
                     int LA87_0 = input.LA(1);
 
@@ -11175,9 +11183,9 @@
                     }
                     switch (alt87) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1255:4: not_key
+                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1262:4: not_key
                             {
-                            pushFollow(FOLLOW_not_key_in_simple_operator4167);
+                            pushFollow(FOLLOW_not_key_in_simple_operator4170);
                             not_key253=not_key();
 
                             state._fsp--;
@@ -11189,16 +11197,16 @@
 
                     }
 
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1256:3: ( operator_key ( square_chunk )? )
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1256:5: operator_key ( square_chunk )?
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1263:3: ( operator_key ( square_chunk )? )
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1263:5: operator_key ( square_chunk )?
                     {
-                    pushFollow(FOLLOW_operator_key_in_simple_operator4174);
+                    pushFollow(FOLLOW_operator_key_in_simple_operator4177);
                     operator_key254=operator_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(operator_key254.getTree(), root_0);
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1256:19: ( square_chunk )?
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1263:19: ( square_chunk )?
                     int alt88=2;
                     int LA88_0 = input.LA(1);
 
@@ -11207,9 +11215,9 @@
                     }
                     switch (alt88) {
                         case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1256:19: square_chunk
+                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1263:19: square_chunk
                             {
-                            pushFollow(FOLLOW_square_chunk_in_simple_operator4177);
+                            pushFollow(FOLLOW_square_chunk_in_simple_operator4180);
                             square_chunk255=square_chunk();
 
                             state._fsp--;
@@ -11233,7 +11241,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);	
             }
-            pushFollow(FOLLOW_expression_value_in_simple_operator4189);
+            pushFollow(FOLLOW_expression_value_in_simple_operator4192);
             expression_value256=expression_value();
 
             state._fsp--;
@@ -11268,7 +11276,7 @@
     };
 
     // $ANTLR start "compound_operator"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1263:1: compound_operator : ( 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:1270:1: compound_operator : ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN ;
     public final DRLParser.compound_operator_return compound_operator() throws RecognitionException {
         DRLParser.compound_operator_return retval = new DRLParser.compound_operator_return();
         retval.start = input.LT(1);
@@ -11295,12 +11303,12 @@
 
          if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR); 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1265: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:1266: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:1272: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:1273:2: ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN
             {
             root_0 = (Object)adaptor.nil();
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1266:2: ( in_key | not_key in_key )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1273:2: ( in_key | not_key in_key )
             int alt90=2;
             int LA90_0 = input.LA(1);
 
@@ -11330,9 +11338,9 @@
             }
             switch (alt90) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1266:4: in_key
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1273:4: in_key
                     {
-                    pushFollow(FOLLOW_in_key_in_compound_operator4211);
+                    pushFollow(FOLLOW_in_key_in_compound_operator4214);
                     in_key257=in_key();
 
                     state._fsp--;
@@ -11342,15 +11350,15 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1266:14: not_key in_key
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1273:14: not_key in_key
                     {
-                    pushFollow(FOLLOW_not_key_in_compound_operator4216);
+                    pushFollow(FOLLOW_not_key_in_compound_operator4219);
                     not_key258=not_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) adaptor.addChild(root_0, not_key258.getTree());
-                    pushFollow(FOLLOW_in_key_in_compound_operator4218);
+                    pushFollow(FOLLOW_in_key_in_compound_operator4221);
                     in_key259=in_key();
 
                     state._fsp--;
@@ -11365,17 +11373,17 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);	
             }
-            LEFT_PAREN260=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_compound_operator4229); if (state.failed) return retval;
+            LEFT_PAREN260=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_compound_operator4232); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
               	emit(LEFT_PAREN260, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_expression_value_in_compound_operator4237);
+            pushFollow(FOLLOW_expression_value_in_compound_operator4240);
             expression_value261=expression_value();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value261.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1269:21: ( COMMA expression_value )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1276:21: ( COMMA expression_value )*
             loop91:
             do {
                 int alt91=2;
@@ -11388,13 +11396,13 @@
 
                 switch (alt91) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1269:23: COMMA expression_value
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1276:23: COMMA expression_value
             	    {
-            	    COMMA262=(Token)match(input,COMMA,FOLLOW_COMMA_in_compound_operator4241); if (state.failed) return retval;
+            	    COMMA262=(Token)match(input,COMMA,FOLLOW_COMMA_in_compound_operator4244); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
             	      	emit(COMMA262, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_expression_value_in_compound_operator4246);
+            	    pushFollow(FOLLOW_expression_value_in_compound_operator4249);
             	    expression_value263=expression_value();
 
             	    state._fsp--;
@@ -11409,7 +11417,7 @@
                 }
             } while (true);
 
-            RIGHT_PAREN264=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_compound_operator4254); if (state.failed) return retval;
+            RIGHT_PAREN264=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_compound_operator4257); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             RIGHT_PAREN264_tree = (Object)adaptor.create(RIGHT_PAREN264);
             adaptor.addChild(root_0, RIGHT_PAREN264_tree);
@@ -11455,7 +11463,7 @@
     };
 
     // $ANTLR start "operator_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1280:1: operator_key : {...}? =>id= ID -> VK_OPERATOR[$id] ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1287:1: operator_key : {...}? =>id= ID -> VK_OPERATOR[$id] ;
     public final DRLParser.operator_key_return operator_key() throws RecognitionException {
         DRLParser.operator_key_return retval = new DRLParser.operator_key_return();
         retval.start = input.LT(1);
@@ -11468,14 +11476,14 @@
         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:1281:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1281:9: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1288:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1288:9: {...}? =>id= ID
             {
             if ( !(((isPluggableEvaluator(false)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "operator_key", "(isPluggableEvaluator(false))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_operator_key4285); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_operator_key4288); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -11494,7 +11502,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1283:9: -> VK_OPERATOR[$id]
+            // 1290:9: -> VK_OPERATOR[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_OPERATOR, id));
 
@@ -11529,7 +11537,7 @@
     };
 
     // $ANTLR start "neg_operator_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1286:1: neg_operator_key : {...}? =>id= ID -> VK_OPERATOR[$id] ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1293:1: neg_operator_key : {...}? =>id= ID -> VK_OPERATOR[$id] ;
     public final DRLParser.neg_operator_key_return neg_operator_key() throws RecognitionException {
         DRLParser.neg_operator_key_return retval = new DRLParser.neg_operator_key_return();
         retval.start = input.LT(1);
@@ -11542,14 +11550,14 @@
         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:1287:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1287:9: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1294:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1294:9: {...}? =>id= ID
             {
             if ( !(((isPluggableEvaluator(true)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "neg_operator_key", "(isPluggableEvaluator(true))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_neg_operator_key4330); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_neg_operator_key4333); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -11568,7 +11576,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1289:9: -> VK_OPERATOR[$id]
+            // 1296:9: -> VK_OPERATOR[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_OPERATOR, id));
 
@@ -11603,7 +11611,7 @@
     };
 
     // $ANTLR start "expression_value"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1292:1: expression_value : ( accessor_path | literal_constraint | paren_chunk ) ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1299:1: expression_value : ( accessor_path | literal_constraint | paren_chunk ) ;
     public final DRLParser.expression_value_return expression_value() throws RecognitionException {
         DRLParser.expression_value_return retval = new DRLParser.expression_value_return();
         retval.start = input.LT(1);
@@ -11619,12 +11627,12 @@
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1293:2: ( ( accessor_path | literal_constraint | paren_chunk ) )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1293:4: ( accessor_path | literal_constraint | paren_chunk )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1300:2: ( ( accessor_path | literal_constraint | paren_chunk ) )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1300: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:1293:4: ( accessor_path | literal_constraint | paren_chunk )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1300:4: ( accessor_path | literal_constraint | paren_chunk )
             int alt92=3;
             switch ( input.LA(1) ) {
             case ID:
@@ -11656,9 +11664,9 @@
 
             switch (alt92) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1293:5: accessor_path
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1300:5: accessor_path
                     {
-                    pushFollow(FOLLOW_accessor_path_in_expression_value4367);
+                    pushFollow(FOLLOW_accessor_path_in_expression_value4370);
                     accessor_path265=accessor_path();
 
                     state._fsp--;
@@ -11668,9 +11676,9 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1294:4: literal_constraint
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1301:4: literal_constraint
                     {
-                    pushFollow(FOLLOW_literal_constraint_in_expression_value4372);
+                    pushFollow(FOLLOW_literal_constraint_in_expression_value4375);
                     literal_constraint266=literal_constraint();
 
                     state._fsp--;
@@ -11680,9 +11688,9 @@
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1295:4: paren_chunk
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1302:4: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_expression_value4378);
+                    pushFollow(FOLLOW_paren_chunk_in_expression_value4381);
                     paren_chunk267=paren_chunk();
 
                     state._fsp--;
@@ -11736,7 +11744,7 @@
     };
 
     // $ANTLR start "literal_constraint"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1309:1: literal_constraint : ( STRING | INT | FLOAT | BOOL | NULL );
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1316:1: literal_constraint : ( STRING | INT | FLOAT | BOOL | NULL );
     public final DRLParser.literal_constraint_return literal_constraint() throws RecognitionException {
         DRLParser.literal_constraint_return retval = new DRLParser.literal_constraint_return();
         retval.start = input.LT(1);
@@ -11756,7 +11764,7 @@
         Object NULL272_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1310:2: ( STRING | INT | FLOAT | BOOL | NULL )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1317:2: ( STRING | INT | FLOAT | BOOL | NULL )
             int alt93=5;
             switch ( input.LA(1) ) {
             case STRING:
@@ -11794,11 +11802,11 @@
 
             switch (alt93) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1310:4: STRING
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1317:4: STRING
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    STRING268=(Token)match(input,STRING,FOLLOW_STRING_in_literal_constraint4397); if (state.failed) return retval;
+                    STRING268=(Token)match(input,STRING,FOLLOW_STRING_in_literal_constraint4400); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     STRING268_tree = (Object)adaptor.create(STRING268);
                     adaptor.addChild(root_0, STRING268_tree);
@@ -11810,11 +11818,11 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1311:4: INT
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1318:4: INT
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    INT269=(Token)match(input,INT,FOLLOW_INT_in_literal_constraint4404); if (state.failed) return retval;
+                    INT269=(Token)match(input,INT,FOLLOW_INT_in_literal_constraint4407); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     INT269_tree = (Object)adaptor.create(INT269);
                     adaptor.addChild(root_0, INT269_tree);
@@ -11826,11 +11834,11 @@
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1312:4: FLOAT
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1319:4: FLOAT
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    FLOAT270=(Token)match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint4411); if (state.failed) return retval;
+                    FLOAT270=(Token)match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint4414); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     FLOAT270_tree = (Object)adaptor.create(FLOAT270);
                     adaptor.addChild(root_0, FLOAT270_tree);
@@ -11842,11 +11850,11 @@
                     }
                     break;
                 case 4 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1313:4: BOOL
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1320:4: BOOL
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    BOOL271=(Token)match(input,BOOL,FOLLOW_BOOL_in_literal_constraint4418); if (state.failed) return retval;
+                    BOOL271=(Token)match(input,BOOL,FOLLOW_BOOL_in_literal_constraint4421); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     BOOL271_tree = (Object)adaptor.create(BOOL271);
                     adaptor.addChild(root_0, BOOL271_tree);
@@ -11858,11 +11866,11 @@
                     }
                     break;
                 case 5 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1314:4: NULL
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1321:4: NULL
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    NULL272=(Token)match(input,NULL,FOLLOW_NULL_in_literal_constraint4425); if (state.failed) return retval;
+                    NULL272=(Token)match(input,NULL,FOLLOW_NULL_in_literal_constraint4428); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     NULL272_tree = (Object)adaptor.create(NULL272);
                     adaptor.addChild(root_0, NULL272_tree);
@@ -11901,7 +11909,7 @@
     };
 
     // $ANTLR start "pattern_type"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1317:1: pattern_type : 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:1324:1: pattern_type : id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) ;
     public final DRLParser.pattern_type_return pattern_type() throws RecognitionException {
         DRLParser.pattern_type_return retval = new DRLParser.pattern_type_return();
         retval.start = input.LT(1);
@@ -11918,16 +11926,16 @@
         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:1318: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:1318:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1325: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:1325:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type4440); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type4443); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if (list_id==null) list_id=new ArrayList();
             list_id.add(id);
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1318:11: (id+= DOT id+= ID )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1325:11: (id+= DOT id+= ID )*
             loop94:
             do {
                 int alt94=2;
@@ -11940,15 +11948,15 @@
 
                 switch (alt94) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1318:13: id+= DOT id+= ID
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1325:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_pattern_type4446); if (state.failed) return retval; 
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_pattern_type4449); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_DOT.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
 
-            	    id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type4450); if (state.failed) return retval; 
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type4453); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
@@ -11967,7 +11975,7 @@
               	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:1321:6: ( dimension_definition )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1328:6: ( dimension_definition )*
             loop95:
             do {
                 int alt95=2;
@@ -11980,9 +11988,9 @@
 
                 switch (alt95) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1321:6: dimension_definition
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1328:6: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_pattern_type4465);
+            	    pushFollow(FOLLOW_dimension_definition_in_pattern_type4468);
             	    dimension_definition273=dimension_definition();
 
             	    state._fsp--;
@@ -12010,9 +12018,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1322:3: -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
+            // 1329:3: -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1322:6: ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1329:6: ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PATTERN_TYPE, "VT_PATTERN_TYPE"), root_1);
@@ -12025,7 +12033,7 @@
 
                 }
                 stream_ID.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1322:28: ( dimension_definition )*
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1329:28: ( dimension_definition )*
                 while ( stream_dimension_definition.hasNext() ) {
                     adaptor.addChild(root_1, stream_dimension_definition.nextTree());
 
@@ -12066,7 +12074,7 @@
     };
 
     // $ANTLR start "data_type"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1325:1: data_type : 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:1332:1: data_type : id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) ;
     public final DRLParser.data_type_return data_type() throws RecognitionException {
         DRLParser.data_type_return retval = new DRLParser.data_type_return();
         retval.start = input.LT(1);
@@ -12083,16 +12091,16 @@
         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:1326: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:1326:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1333: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:1333:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_data_type4493); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_data_type4496); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if (list_id==null) list_id=new ArrayList();
             list_id.add(id);
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1326:11: (id+= DOT id+= ID )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1333:11: (id+= DOT id+= ID )*
             loop96:
             do {
                 int alt96=2;
@@ -12105,15 +12113,15 @@
 
                 switch (alt96) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1326:13: id+= DOT id+= ID
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1333:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_data_type4499); if (state.failed) return retval; 
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_data_type4502); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_DOT.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
 
-            	    id=(Token)match(input,ID,FOLLOW_ID_in_data_type4503); if (state.failed) return retval; 
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_data_type4506); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
@@ -12128,7 +12136,7 @@
                 }
             } while (true);
 
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1326:31: ( dimension_definition )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1333:31: ( dimension_definition )*
             loop97:
             do {
                 int alt97=2;
@@ -12141,9 +12149,9 @@
 
                 switch (alt97) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1326:31: dimension_definition
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1333:31: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_data_type4508);
+            	    pushFollow(FOLLOW_dimension_definition_in_data_type4511);
             	    dimension_definition274=dimension_definition();
 
             	    state._fsp--;
@@ -12174,9 +12182,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1328:3: -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
+            // 1335:3: -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1328:6: ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1335:6: ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_DATA_TYPE, "VT_DATA_TYPE"), root_1);
@@ -12189,7 +12197,7 @@
 
                 }
                 stream_ID.reset();
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1328:25: ( dimension_definition )*
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1335:25: ( dimension_definition )*
                 while ( stream_dimension_definition.hasNext() ) {
                     adaptor.addChild(root_1, stream_dimension_definition.nextTree());
 
@@ -12230,7 +12238,7 @@
     };
 
     // $ANTLR start "dimension_definition"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1331:1: dimension_definition : LEFT_SQUARE RIGHT_SQUARE ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1338:1: dimension_definition : LEFT_SQUARE RIGHT_SQUARE ;
     public final DRLParser.dimension_definition_return dimension_definition() throws RecognitionException {
         DRLParser.dimension_definition_return retval = new DRLParser.dimension_definition_return();
         retval.start = input.LT(1);
@@ -12244,12 +12252,12 @@
         Object RIGHT_SQUARE276_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1332:2: ( LEFT_SQUARE RIGHT_SQUARE )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1332:4: LEFT_SQUARE RIGHT_SQUARE
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1339:2: ( LEFT_SQUARE RIGHT_SQUARE )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1339:4: LEFT_SQUARE RIGHT_SQUARE
             {
             root_0 = (Object)adaptor.nil();
 
-            LEFT_SQUARE275=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dimension_definition4537); if (state.failed) return retval;
+            LEFT_SQUARE275=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dimension_definition4540); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             LEFT_SQUARE275_tree = (Object)adaptor.create(LEFT_SQUARE275);
             adaptor.addChild(root_0, LEFT_SQUARE275_tree);
@@ -12257,7 +12265,7 @@
             if ( state.backtracking==0 ) {
               	emit(LEFT_SQUARE275, DroolsEditorType.SYMBOL);	
             }
-            RIGHT_SQUARE276=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dimension_definition4544); if (state.failed) return retval;
+            RIGHT_SQUARE276=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dimension_definition4547); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             RIGHT_SQUARE276_tree = (Object)adaptor.create(RIGHT_SQUARE276);
             adaptor.addChild(root_0, RIGHT_SQUARE276_tree);
@@ -12294,7 +12302,7 @@
     };
 
     // $ANTLR start "accessor_path"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1336:1: accessor_path : 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:1343:1: accessor_path : accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) ;
     public final DRLParser.accessor_path_return accessor_path() throws RecognitionException {
         DRLParser.accessor_path_return retval = new DRLParser.accessor_path_return();
         retval.start = input.LT(1);
@@ -12311,16 +12319,16 @@
         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:1337: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:1337:4: accessor_element ( DOT accessor_element )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1344: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:1344:4: accessor_element ( DOT accessor_element )*
             {
-            pushFollow(FOLLOW_accessor_element_in_accessor_path4558);
+            pushFollow(FOLLOW_accessor_element_in_accessor_path4561);
             accessor_element277=accessor_element();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_accessor_element.add(accessor_element277.getTree());
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1337:21: ( DOT accessor_element )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1344:21: ( DOT accessor_element )*
             loop98:
             do {
                 int alt98=2;
@@ -12333,15 +12341,15 @@
 
                 switch (alt98) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1337:23: DOT accessor_element
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1344:23: DOT accessor_element
             	    {
-            	    DOT278=(Token)match(input,DOT,FOLLOW_DOT_in_accessor_path4562); if (state.failed) return retval; 
+            	    DOT278=(Token)match(input,DOT,FOLLOW_DOT_in_accessor_path4565); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_DOT.add(DOT278);
 
             	    if ( state.backtracking==0 ) {
             	      	emit(DOT278, DroolsEditorType.IDENTIFIER);	
             	    }
-            	    pushFollow(FOLLOW_accessor_element_in_accessor_path4566);
+            	    pushFollow(FOLLOW_accessor_element_in_accessor_path4569);
             	    accessor_element279=accessor_element();
 
             	    state._fsp--;
@@ -12369,9 +12377,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1338:2: -> ^( VT_ACCESSOR_PATH ( accessor_element )+ )
+            // 1345:2: -> ^( VT_ACCESSOR_PATH ( accessor_element )+ )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1338:5: ^( VT_ACCESSOR_PATH ( accessor_element )+ )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1345:5: ^( VT_ACCESSOR_PATH ( accessor_element )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_ACCESSOR_PATH, "VT_ACCESSOR_PATH"), root_1);
@@ -12419,7 +12427,7 @@
     };
 
     // $ANTLR start "accessor_element"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1341:1: accessor_element : 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:1348:1: accessor_element : ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) ;
     public final DRLParser.accessor_element_return accessor_element() throws RecognitionException {
         DRLParser.accessor_element_return retval = new DRLParser.accessor_element_return();
         retval.start = input.LT(1);
@@ -12434,16 +12442,16 @@
         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:1342: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:1342:4: ID ( square_chunk )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1349: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:1349:4: ID ( square_chunk )*
             {
-            ID280=(Token)match(input,ID,FOLLOW_ID_in_accessor_element4590); if (state.failed) return retval; 
+            ID280=(Token)match(input,ID,FOLLOW_ID_in_accessor_element4593); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(ID280);
 
             if ( state.backtracking==0 ) {
               	emit(ID280, DroolsEditorType.IDENTIFIER);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1343:3: ( square_chunk )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1350:3: ( square_chunk )*
             loop99:
             do {
                 int alt99=2;
@@ -12456,9 +12464,9 @@
 
                 switch (alt99) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1343:3: square_chunk
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1350:3: square_chunk
             	    {
-            	    pushFollow(FOLLOW_square_chunk_in_accessor_element4596);
+            	    pushFollow(FOLLOW_square_chunk_in_accessor_element4599);
             	    square_chunk281=square_chunk();
 
             	    state._fsp--;
@@ -12486,15 +12494,15 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1344:2: -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
+            // 1351:2: -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
             {
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1344:5: ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1351:5: ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_ACCESSOR_ELEMENT, "VT_ACCESSOR_ELEMENT"), root_1);
 
                 adaptor.addChild(root_1, stream_ID.nextNode());
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1344:30: ( square_chunk )*
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1351:30: ( square_chunk )*
                 while ( stream_square_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_square_chunk.nextTree());
 
@@ -12535,7 +12543,7 @@
     };
 
     // $ANTLR start "rhs_chunk"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1347:1: rhs_chunk : 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:1354:1: rhs_chunk : rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] ;
     public final DRLParser.rhs_chunk_return rhs_chunk() throws RecognitionException {
         DRLParser.rhs_chunk_return retval = new DRLParser.rhs_chunk_return();
         retval.start = input.LT(1);
@@ -12550,10 +12558,10 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1350: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:1350:5: rc= rhs_chunk_data
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1357: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:1357:5: rc= rhs_chunk_data
             {
-            pushFollow(FOLLOW_rhs_chunk_data_in_rhs_chunk4625);
+            pushFollow(FOLLOW_rhs_chunk_data_in_rhs_chunk4628);
             rc=rhs_chunk_data();
 
             state._fsp--;
@@ -12575,7 +12583,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1351:2: -> VT_RHS_CHUNK[$rc.start,text]
+            // 1358:2: -> VT_RHS_CHUNK[$rc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_RHS_CHUNK, (rc!=null?((Token)rc.start):null), text));
 
@@ -12610,7 +12618,7 @@
     };
 
     // $ANTLR start "rhs_chunk_data"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1354:1: rhs_chunk_data : THEN (any=~ END )* end1= END ( SEMICOLON )? ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1361:1: rhs_chunk_data : THEN (any=~ END )* end1= END ( SEMICOLON )? ;
     public final DRLParser.rhs_chunk_data_return rhs_chunk_data() throws RecognitionException {
         DRLParser.rhs_chunk_data_return retval = new DRLParser.rhs_chunk_data_return();
         retval.start = input.LT(1);
@@ -12628,12 +12636,12 @@
         Object SEMICOLON283_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1355:2: ( THEN (any=~ END )* end1= END ( SEMICOLON )? )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1355:4: THEN (any=~ END )* end1= END ( SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1362:2: ( THEN (any=~ END )* end1= END ( SEMICOLON )? )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1362:4: THEN (any=~ END )* end1= END ( SEMICOLON )?
             {
             root_0 = (Object)adaptor.nil();
 
-            THEN282=(Token)match(input,THEN,FOLLOW_THEN_in_rhs_chunk_data4644); if (state.failed) return retval;
+            THEN282=(Token)match(input,THEN,FOLLOW_THEN_in_rhs_chunk_data4647); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             THEN282_tree = (Object)adaptor.create(THEN282);
             adaptor.addChild(root_0, THEN282_tree);
@@ -12644,7 +12652,7 @@
               			emit(Location.LOCATION_RHS);
               		}	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1360:4: (any=~ END )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1367:4: (any=~ END )*
             loop100:
             do {
                 int alt100=2;
@@ -12657,7 +12665,7 @@
 
                 switch (alt100) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1360:6: any=~ END
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1367: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) ) {
@@ -12683,7 +12691,7 @@
                 }
             } while (true);
 
-            end1=(Token)match(input,END,FOLLOW_END_in_rhs_chunk_data4670); if (state.failed) return retval;
+            end1=(Token)match(input,END,FOLLOW_END_in_rhs_chunk_data4673); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             end1_tree = (Object)adaptor.create(end1);
             adaptor.addChild(root_0, end1_tree);
@@ -12691,7 +12699,7 @@
             if ( state.backtracking==0 ) {
               	emit(end1, DroolsEditorType.KEYWORD);	
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1362:3: ( SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1369:3: ( SEMICOLON )?
             int alt101=2;
             int LA101_0 = input.LA(1);
 
@@ -12700,9 +12708,9 @@
             }
             switch (alt101) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1362:3: SEMICOLON
+                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1369:3: SEMICOLON
                     {
-                    SEMICOLON283=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_rhs_chunk_data4676); if (state.failed) return retval;
+                    SEMICOLON283=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_rhs_chunk_data4679); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     SEMICOLON283_tree = (Object)adaptor.create(SEMICOLON283);
                     adaptor.addChild(root_0, SEMICOLON283_tree);
@@ -12745,7 +12753,7 @@
     };
 
     // $ANTLR start "curly_chunk"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1365:1: curly_chunk : 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:1372:1: curly_chunk : cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] ;
     public final DRLParser.curly_chunk_return curly_chunk() throws RecognitionException {
         DRLParser.curly_chunk_return retval = new DRLParser.curly_chunk_return();
         retval.start = input.LT(1);
@@ -12760,10 +12768,10 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1368: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:1368:5: cc= curly_chunk_data[false]
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1375: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:1375:5: cc= curly_chunk_data[false]
             {
-            pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk4695);
+            pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk4698);
             cc=curly_chunk_data(false);
 
             state._fsp--;
@@ -12785,7 +12793,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1369:2: -> VT_CURLY_CHUNK[$cc.start,text]
+            // 1376:2: -> VT_CURLY_CHUNK[$cc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_CURLY_CHUNK, (cc!=null?((Token)cc.start):null), text));
 
@@ -12820,7 +12828,7 @@
     };
 
     // $ANTLR start "curly_chunk_data"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1372:1: curly_chunk_data[boolean isRecursive] : 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:1379:1: curly_chunk_data[boolean isRecursive] : lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY ;
     public final DRLParser.curly_chunk_data_return curly_chunk_data(boolean isRecursive) throws RecognitionException {
         DRLParser.curly_chunk_data_return retval = new DRLParser.curly_chunk_data_return();
         retval.start = input.LT(1);
@@ -12838,12 +12846,12 @@
         Object rc1_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1373: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:1373:4: 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:1380: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:1380:4: lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY
             {
             root_0 = (Object)adaptor.nil();
 
-            lc1=(Token)match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk_data4718); if (state.failed) return retval;
+            lc1=(Token)match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk_data4721); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             lc1_tree = (Object)adaptor.create(lc1);
             adaptor.addChild(root_0, lc1_tree);
@@ -12856,7 +12864,7 @@
               			}	
               		
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1380:4: (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1387:4: (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )*
             loop102:
             do {
                 int alt102=3;
@@ -12872,7 +12880,7 @@
 
                 switch (alt102) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1380:5: any=~ ( LEFT_CURLY | RIGHT_CURLY )
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1387: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) ) {
@@ -12893,9 +12901,9 @@
             	    }
             	    break;
             	case 2 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1380:87: curly_chunk_data[true]
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1387:87: curly_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk_data4746);
+            	    pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk_data4749);
             	    curly_chunk_data284=curly_chunk_data(true);
 
             	    state._fsp--;
@@ -12910,7 +12918,7 @@
                 }
             } while (true);
 
-            rc1=(Token)match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk_data4757); if (state.failed) return retval;
+            rc1=(Token)match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk_data4760); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             rc1_tree = (Object)adaptor.create(rc1);
             adaptor.addChild(root_0, rc1_tree);
@@ -12952,7 +12960,7 @@
     };
 
     // $ANTLR start "paren_chunk"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1390:1: paren_chunk : 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:1397:1: paren_chunk : pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] ;
     public final DRLParser.paren_chunk_return paren_chunk() throws RecognitionException {
         DRLParser.paren_chunk_return retval = new DRLParser.paren_chunk_return();
         retval.start = input.LT(1);
@@ -12967,10 +12975,10 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1393: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:1393:5: pc= paren_chunk_data[false]
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1400: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:1400:5: pc= paren_chunk_data[false]
             {
-            pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk4778);
+            pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk4781);
             pc=paren_chunk_data(false);
 
             state._fsp--;
@@ -12992,7 +13000,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1394:2: -> VT_PAREN_CHUNK[$pc.start,text]
+            // 1401:2: -> VT_PAREN_CHUNK[$pc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_PAREN_CHUNK, (pc!=null?((Token)pc.start):null), text));
 
@@ -13027,7 +13035,7 @@
     };
 
     // $ANTLR start "paren_chunk_data"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1397:1: paren_chunk_data[boolean isRecursive] : 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:1404:1: paren_chunk_data[boolean isRecursive] : lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN ;
     public final DRLParser.paren_chunk_data_return paren_chunk_data(boolean isRecursive) throws RecognitionException {
         DRLParser.paren_chunk_data_return retval = new DRLParser.paren_chunk_data_return();
         retval.start = input.LT(1);
@@ -13045,12 +13053,12 @@
         Object rp1_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1398: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:1398:4: 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:1405: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:1405:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN
             {
             root_0 = (Object)adaptor.nil();
 
-            lp1=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk_data4802); if (state.failed) return retval;
+            lp1=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk_data4805); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             lp1_tree = (Object)adaptor.create(lp1);
             adaptor.addChild(root_0, lp1_tree);
@@ -13063,7 +13071,7 @@
               			}	
               		
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1405:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1412:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )*
             loop103:
             do {
                 int alt103=3;
@@ -13079,7 +13087,7 @@
 
                 switch (alt103) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1405:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1412: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) ) {
@@ -13100,9 +13108,9 @@
             	    }
             	    break;
             	case 2 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1405:87: paren_chunk_data[true]
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1412:87: paren_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk_data4830);
+            	    pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk_data4833);
             	    paren_chunk_data285=paren_chunk_data(true);
 
             	    state._fsp--;
@@ -13117,7 +13125,7 @@
                 }
             } while (true);
 
-            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk_data4841); if (state.failed) return retval;
+            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk_data4844); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             rp1_tree = (Object)adaptor.create(rp1);
             adaptor.addChild(root_0, rp1_tree);
@@ -13159,7 +13167,7 @@
     };
 
     // $ANTLR start "square_chunk"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1415:1: square_chunk : 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:1422:1: square_chunk : sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] ;
     public final DRLParser.square_chunk_return square_chunk() throws RecognitionException {
         DRLParser.square_chunk_return retval = new DRLParser.square_chunk_return();
         retval.start = input.LT(1);
@@ -13174,10 +13182,10 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1418: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:1418:5: sc= square_chunk_data[false]
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1425: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:1425:5: sc= square_chunk_data[false]
             {
-            pushFollow(FOLLOW_square_chunk_data_in_square_chunk4862);
+            pushFollow(FOLLOW_square_chunk_data_in_square_chunk4865);
             sc=square_chunk_data(false);
 
             state._fsp--;
@@ -13199,7 +13207,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1419:2: -> VT_SQUARE_CHUNK[$sc.start,text]
+            // 1426:2: -> VT_SQUARE_CHUNK[$sc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_SQUARE_CHUNK, (sc!=null?((Token)sc.start):null), text));
 
@@ -13234,7 +13242,7 @@
     };
 
     // $ANTLR start "square_chunk_data"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1422:1: square_chunk_data[boolean isRecursive] : 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:1429:1: square_chunk_data[boolean isRecursive] : ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE ;
     public final DRLParser.square_chunk_data_return square_chunk_data(boolean isRecursive) throws RecognitionException {
         DRLParser.square_chunk_data_return retval = new DRLParser.square_chunk_data_return();
         retval.start = input.LT(1);
@@ -13252,12 +13260,12 @@
         Object rs1_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1423: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:1423:4: 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:1430: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:1430:4: ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE
             {
             root_0 = (Object)adaptor.nil();
 
-            ls1=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk_data4885); if (state.failed) return retval;
+            ls1=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk_data4888); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             ls1_tree = (Object)adaptor.create(ls1);
             adaptor.addChild(root_0, ls1_tree);
@@ -13270,7 +13278,7 @@
               			}	
               		
             }
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1430:4: (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )*
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1437:4: (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )*
             loop104:
             do {
                 int alt104=3;
@@ -13286,7 +13294,7 @@
 
                 switch (alt104) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1430:5: any=~ ( LEFT_SQUARE | RIGHT_SQUARE )
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1437: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) ) {
@@ -13307,9 +13315,9 @@
             	    }
             	    break;
             	case 2 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1430:88: square_chunk_data[true]
+            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1437:88: square_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_square_chunk_data_in_square_chunk_data4912);
+            	    pushFollow(FOLLOW_square_chunk_data_in_square_chunk_data4915);
             	    square_chunk_data286=square_chunk_data(true);
 
             	    state._fsp--;
@@ -13324,7 +13332,7 @@
                 }
             } while (true);
 
-            rs1=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk_data4923); if (state.failed) return retval;
+            rs1=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk_data4926); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             rs1_tree = (Object)adaptor.create(rs1);
             adaptor.addChild(root_0, rs1_tree);
@@ -13366,7 +13374,7 @@
     };
 
     // $ANTLR start "lock_on_active_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1440:1: lock_on_active_key : {...}? =>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:1447:1: lock_on_active_key : {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] ;
     public final DRLParser.lock_on_active_key_return lock_on_active_key() throws RecognitionException {
         DRLParser.lock_on_active_key_return retval = new DRLParser.lock_on_active_key_return();
         retval.start = input.LT(1);
@@ -13391,26 +13399,26 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1443: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:1443:5: {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1450: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:1450:5: {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "lock_on_active_key", "(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, \"-\") && validateLT(5, DroolsSoftKeywords.ACTIVE))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key4947); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key4950); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key4951); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key4954); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key4955); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key4958); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            mis2=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key4959); if (state.failed) return retval; 
+            mis2=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key4962); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis2);
 
-            id3=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key4963); if (state.failed) return retval; 
+            id3=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key4966); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id3);
 
             if ( state.backtracking==0 ) {
@@ -13436,7 +13444,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1449:3: -> VK_LOCK_ON_ACTIVE[$start, text]
+            // 1456:3: -> VK_LOCK_ON_ACTIVE[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_LOCK_ON_ACTIVE, ((Token)retval.start), text));
 
@@ -13471,7 +13479,7 @@
     };
 
     // $ANTLR start "date_effective_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1452:1: date_effective_key : {...}? =>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:1459:1: date_effective_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] ;
     public final DRLParser.date_effective_key_return date_effective_key() throws RecognitionException {
         DRLParser.date_effective_key_return retval = new DRLParser.date_effective_key_return();
         retval.start = input.LT(1);
@@ -13492,20 +13500,20 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1455: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:1455:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1462: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:1462:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "date_effective_key", "(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key4995); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key4998); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_effective_key4999); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_effective_key5002); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key5003); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key5006); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -13529,7 +13537,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1459:3: -> VK_DATE_EFFECTIVE[$start, text]
+            // 1466:3: -> VK_DATE_EFFECTIVE[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DATE_EFFECTIVE, ((Token)retval.start), text));
 
@@ -13564,7 +13572,7 @@
     };
 
     // $ANTLR start "date_expires_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1462:1: date_expires_key : {...}? =>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:1469:1: date_expires_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] ;
     public final DRLParser.date_expires_key_return date_expires_key() throws RecognitionException {
         DRLParser.date_expires_key_return retval = new DRLParser.date_expires_key_return();
         retval.start = input.LT(1);
@@ -13585,20 +13593,20 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1465: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:1465:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1472: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:1472:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "date_expires_key", "(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.EXPIRES))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key5035); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key5038); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_expires_key5039); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_expires_key5042); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key5043); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key5046); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -13622,7 +13630,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1469:3: -> VK_DATE_EXPIRES[$start, text]
+            // 1476:3: -> VK_DATE_EXPIRES[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DATE_EXPIRES, ((Token)retval.start), text));
 
@@ -13657,7 +13665,7 @@
     };
 
     // $ANTLR start "no_loop_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1472:1: no_loop_key : {...}? =>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:1479:1: no_loop_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] ;
     public final DRLParser.no_loop_key_return no_loop_key() throws RecognitionException {
         DRLParser.no_loop_key_return retval = new DRLParser.no_loop_key_return();
         retval.start = input.LT(1);
@@ -13678,20 +13686,20 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1475: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:1475:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1482: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:1482:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "no_loop_key", "(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.LOOP))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key5075); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key5078); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_no_loop_key5079); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_no_loop_key5082); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key5083); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key5086); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -13715,7 +13723,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1479:3: -> VK_NO_LOOP[$start, text]
+            // 1486:3: -> VK_NO_LOOP[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_NO_LOOP, ((Token)retval.start), text));
 
@@ -13750,7 +13758,7 @@
     };
 
     // $ANTLR start "auto_focus_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1482:1: auto_focus_key : {...}? =>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:1489:1: auto_focus_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] ;
     public final DRLParser.auto_focus_key_return auto_focus_key() throws RecognitionException {
         DRLParser.auto_focus_key_return retval = new DRLParser.auto_focus_key_return();
         retval.start = input.LT(1);
@@ -13771,20 +13779,20 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1485: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:1485:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1492: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:1492:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "auto_focus_key", "(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.FOCUS))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key5115); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key5118); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_auto_focus_key5119); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_auto_focus_key5122); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key5123); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key5126); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -13808,7 +13816,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1489:3: -> VK_AUTO_FOCUS[$start, text]
+            // 1496:3: -> VK_AUTO_FOCUS[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_AUTO_FOCUS, ((Token)retval.start), text));
 
@@ -13843,7 +13851,7 @@
     };
 
     // $ANTLR start "activation_group_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1492:1: activation_group_key : {...}? =>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:1499:1: activation_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] ;
     public final DRLParser.activation_group_key_return activation_group_key() throws RecognitionException {
         DRLParser.activation_group_key_return retval = new DRLParser.activation_group_key_return();
         retval.start = input.LT(1);
@@ -13864,20 +13872,20 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1495: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:1495:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1502: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:1502:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "activation_group_key", "(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.GROUP))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key5155); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key5158); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_activation_group_key5159); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_activation_group_key5162); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key5163); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key5166); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -13901,7 +13909,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1499:3: -> VK_ACTIVATION_GROUP[$start, text]
+            // 1506:3: -> VK_ACTIVATION_GROUP[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ACTIVATION_GROUP, ((Token)retval.start), text));
 
@@ -13936,7 +13944,7 @@
     };
 
     // $ANTLR start "agenda_group_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1502:1: agenda_group_key : {...}? =>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:1509:1: agenda_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] ;
     public final DRLParser.agenda_group_key_return agenda_group_key() throws RecognitionException {
         DRLParser.agenda_group_key_return retval = new DRLParser.agenda_group_key_return();
         retval.start = input.LT(1);
@@ -13957,20 +13965,20 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1505: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:1505:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1512: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:1512:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "agenda_group_key", "(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.GROUP))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key5195); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key5198); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_agenda_group_key5199); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_agenda_group_key5202); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key5203); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key5206); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -13994,7 +14002,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1509:3: -> VK_AGENDA_GROUP[$start, text]
+            // 1516:3: -> VK_AGENDA_GROUP[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_AGENDA_GROUP, ((Token)retval.start), text));
 
@@ -14029,7 +14037,7 @@
     };
 
     // $ANTLR start "ruleflow_group_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1512:1: ruleflow_group_key : {...}? =>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:1519:1: ruleflow_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] ;
     public final DRLParser.ruleflow_group_key_return ruleflow_group_key() throws RecognitionException {
         DRLParser.ruleflow_group_key_return retval = new DRLParser.ruleflow_group_key_return();
         retval.start = input.LT(1);
@@ -14050,20 +14058,20 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1515: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:1515:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1522: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:1522:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "ruleflow_group_key", "(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.GROUP))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key5235); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key5238); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_ruleflow_group_key5239); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_ruleflow_group_key5242); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key5243); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key5246); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -14087,7 +14095,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1519:3: -> VK_RULEFLOW_GROUP[$start, text]
+            // 1526:3: -> VK_RULEFLOW_GROUP[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_RULEFLOW_GROUP, ((Token)retval.start), text));
 
@@ -14122,7 +14130,7 @@
     };
 
     // $ANTLR start "entry_point_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1522:1: entry_point_key : {...}? =>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:1529:1: entry_point_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] ;
     public final DRLParser.entry_point_key_return entry_point_key() throws RecognitionException {
         DRLParser.entry_point_key_return retval = new DRLParser.entry_point_key_return();
         retval.start = input.LT(1);
@@ -14143,20 +14151,20 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1525: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:1525:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1532: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:1532:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.POINT)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "entry_point_key", "(validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.POINT))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key5275); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key5278); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_entry_point_key5279); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_entry_point_key5282); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key5283); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key5286); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -14180,7 +14188,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1529:3: -> VK_ENTRY_POINT[$start, text]
+            // 1536:3: -> VK_ENTRY_POINT[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ENTRY_POINT, ((Token)retval.start), text));
 
@@ -14215,7 +14223,7 @@
     };
 
     // $ANTLR start "duration_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1532:1: duration_key : {...}? =>id= ID -> VK_DURATION[$id] ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1539:1: duration_key : {...}? =>id= ID -> VK_DURATION[$id] ;
     public final DRLParser.duration_key_return duration_key() throws RecognitionException {
         DRLParser.duration_key_return retval = new DRLParser.duration_key_return();
         retval.start = input.LT(1);
@@ -14228,14 +14236,14 @@
         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:1533:2: ({...}? =>id= ID -> VK_DURATION[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1533:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1540:2: ({...}? =>id= ID -> VK_DURATION[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1540:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.DURATION)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "duration_key", "(validateIdentifierKey(DroolsSoftKeywords.DURATION))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_duration_key5312); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_duration_key5315); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14254,7 +14262,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1535:3: -> VK_DURATION[$id]
+            // 1542:3: -> VK_DURATION[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DURATION, id));
 
@@ -14289,7 +14297,7 @@
     };
 
     // $ANTLR start "package_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1538:1: package_key : {...}? =>id= ID -> VK_PACKAGE[$id] ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1545:1: package_key : {...}? =>id= ID -> VK_PACKAGE[$id] ;
     public final DRLParser.package_key_return package_key() throws RecognitionException {
         DRLParser.package_key_return retval = new DRLParser.package_key_return();
         retval.start = input.LT(1);
@@ -14302,14 +14310,14 @@
         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:1539:2: ({...}? =>id= ID -> VK_PACKAGE[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1539:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1546:2: ({...}? =>id= ID -> VK_PACKAGE[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1546:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.PACKAGE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "package_key", "(validateIdentifierKey(DroolsSoftKeywords.PACKAGE))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_package_key5339); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_package_key5342); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14328,7 +14336,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1541:3: -> VK_PACKAGE[$id]
+            // 1548:3: -> VK_PACKAGE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_PACKAGE, id));
 
@@ -14363,7 +14371,7 @@
     };
 
     // $ANTLR start "import_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1544:1: import_key : {...}? =>id= ID -> VK_IMPORT[$id] ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1551:1: import_key : {...}? =>id= ID -> VK_IMPORT[$id] ;
     public final DRLParser.import_key_return import_key() throws RecognitionException {
         DRLParser.import_key_return retval = new DRLParser.import_key_return();
         retval.start = input.LT(1);
@@ -14376,14 +14384,14 @@
         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:1545:2: ({...}? =>id= ID -> VK_IMPORT[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1545:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1552:2: ({...}? =>id= ID -> VK_IMPORT[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1552:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "import_key", "(validateIdentifierKey(DroolsSoftKeywords.IMPORT))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_import_key5366); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_import_key5369); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14402,7 +14410,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1547:3: -> VK_IMPORT[$id]
+            // 1554:3: -> VK_IMPORT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_IMPORT, id));
 
@@ -14437,7 +14445,7 @@
     };
 
     // $ANTLR start "dialect_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1550:1: dialect_key : {...}? =>id= ID -> VK_DIALECT[$id] ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1557:1: dialect_key : {...}? =>id= ID -> VK_DIALECT[$id] ;
     public final DRLParser.dialect_key_return dialect_key() throws RecognitionException {
         DRLParser.dialect_key_return retval = new DRLParser.dialect_key_return();
         retval.start = input.LT(1);
@@ -14450,14 +14458,14 @@
         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:1551:2: ({...}? =>id= ID -> VK_DIALECT[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1551:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1558:2: ({...}? =>id= ID -> VK_DIALECT[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1558:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "dialect_key", "(validateIdentifierKey(DroolsSoftKeywords.DIALECT))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_dialect_key5393); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_dialect_key5396); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14476,7 +14484,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1553:3: -> VK_DIALECT[$id]
+            // 1560:3: -> VK_DIALECT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DIALECT, id));
 
@@ -14511,7 +14519,7 @@
     };
 
     // $ANTLR start "salience_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1556:1: salience_key : {...}? =>id= ID -> VK_SALIENCE[$id] ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1563:1: salience_key : {...}? =>id= ID -> VK_SALIENCE[$id] ;
     public final DRLParser.salience_key_return salience_key() throws RecognitionException {
         DRLParser.salience_key_return retval = new DRLParser.salience_key_return();
         retval.start = input.LT(1);
@@ -14524,14 +14532,14 @@
         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:1557:2: ({...}? =>id= ID -> VK_SALIENCE[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1557:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1564:2: ({...}? =>id= ID -> VK_SALIENCE[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1564:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "salience_key", "(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_salience_key5420); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_salience_key5423); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14550,7 +14558,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1559:3: -> VK_SALIENCE[$id]
+            // 1566:3: -> VK_SALIENCE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_SALIENCE, id));
 
@@ -14585,7 +14593,7 @@
     };
 
     // $ANTLR start "enabled_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1562:1: enabled_key : {...}? =>id= ID -> VK_ENABLED[$id] ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1569:1: enabled_key : {...}? =>id= ID -> VK_ENABLED[$id] ;
     public final DRLParser.enabled_key_return enabled_key() throws RecognitionException {
         DRLParser.enabled_key_return retval = new DRLParser.enabled_key_return();
         retval.start = input.LT(1);
@@ -14598,14 +14606,14 @@
         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:1563:2: ({...}? =>id= ID -> VK_ENABLED[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1563:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1570:2: ({...}? =>id= ID -> VK_ENABLED[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1570:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "enabled_key", "(validateIdentifierKey(DroolsSoftKeywords.ENABLED))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_enabled_key5447); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_enabled_key5450); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14624,7 +14632,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1565:3: -> VK_ENABLED[$id]
+            // 1572:3: -> VK_ENABLED[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ENABLED, id));
 
@@ -14659,7 +14667,7 @@
     };
 
     // $ANTLR start "attributes_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1568:1: attributes_key : {...}? =>id= ID -> VK_ATTRIBUTES[$id] ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1575:1: attributes_key : {...}? =>id= ID -> VK_ATTRIBUTES[$id] ;
     public final DRLParser.attributes_key_return attributes_key() throws RecognitionException {
         DRLParser.attributes_key_return retval = new DRLParser.attributes_key_return();
         retval.start = input.LT(1);
@@ -14672,14 +14680,14 @@
         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:1569:2: ({...}? =>id= ID -> VK_ATTRIBUTES[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1569:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1576:2: ({...}? =>id= ID -> VK_ATTRIBUTES[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1576:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "attributes_key", "(validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_attributes_key5474); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_attributes_key5477); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14698,7 +14706,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1571:3: -> VK_ATTRIBUTES[$id]
+            // 1578:3: -> VK_ATTRIBUTES[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ATTRIBUTES, id));
 
@@ -14733,7 +14741,7 @@
     };
 
     // $ANTLR start "rule_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1574:1: rule_key : {...}? =>id= ID -> VK_RULE[$id] ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1581:1: rule_key : {...}? =>id= ID -> VK_RULE[$id] ;
     public final DRLParser.rule_key_return rule_key() throws RecognitionException {
         DRLParser.rule_key_return retval = new DRLParser.rule_key_return();
         retval.start = input.LT(1);
@@ -14746,14 +14754,14 @@
         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:1575:2: ({...}? =>id= ID -> VK_RULE[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1575:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1582:2: ({...}? =>id= ID -> VK_RULE[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1582:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.RULE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "rule_key", "(validateIdentifierKey(DroolsSoftKeywords.RULE))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_rule_key5501); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_rule_key5504); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14772,7 +14780,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1577:3: -> VK_RULE[$id]
+            // 1584:3: -> VK_RULE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_RULE, id));
 
@@ -14807,7 +14815,7 @@
     };
 
     // $ANTLR start "extend_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1580:1: extend_key : {...}? =>id= ID -> VK_EXTEND[$id] ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1587:1: extend_key : {...}? =>id= ID -> VK_EXTEND[$id] ;
     public final DRLParser.extend_key_return extend_key() throws RecognitionException {
         DRLParser.extend_key_return retval = new DRLParser.extend_key_return();
         retval.start = input.LT(1);
@@ -14820,14 +14828,14 @@
         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:1581:2: ({...}? =>id= ID -> VK_EXTEND[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1581:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1588:2: ({...}? =>id= ID -> VK_EXTEND[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1588:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "extend_key", "(validateIdentifierKey(DroolsSoftKeywords.EXTEND))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_extend_key5528); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_extend_key5531); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14846,7 +14854,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1583:3: -> VK_EXTEND[$id]
+            // 1590:3: -> VK_EXTEND[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_EXTEND, id));
 
@@ -14881,7 +14889,7 @@
     };
 
     // $ANTLR start "template_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1586:1: template_key : {...}? =>id= ID -> VK_TEMPLATE[$id] ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1593:1: template_key : {...}? =>id= ID -> VK_TEMPLATE[$id] ;
     public final DRLParser.template_key_return template_key() throws RecognitionException {
         DRLParser.template_key_return retval = new DRLParser.template_key_return();
         retval.start = input.LT(1);
@@ -14894,14 +14902,14 @@
         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:1587:2: ({...}? =>id= ID -> VK_TEMPLATE[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1587:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1594:2: ({...}? =>id= ID -> VK_TEMPLATE[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1594:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "template_key", "(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_template_key5555); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_template_key5558); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14920,7 +14928,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1589:3: -> VK_TEMPLATE[$id]
+            // 1596:3: -> VK_TEMPLATE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_TEMPLATE, id));
 
@@ -14955,7 +14963,7 @@
     };
 
     // $ANTLR start "query_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1592:1: query_key : {...}? =>id= ID -> VK_QUERY[$id] ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1599:1: query_key : {...}? =>id= ID -> VK_QUERY[$id] ;
     public final DRLParser.query_key_return query_key() throws RecognitionException {
         DRLParser.query_key_return retval = new DRLParser.query_key_return();
         retval.start = input.LT(1);
@@ -14968,14 +14976,14 @@
         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:1593:2: ({...}? =>id= ID -> VK_QUERY[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1593:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1600:2: ({...}? =>id= ID -> VK_QUERY[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1600:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "query_key", "(validateIdentifierKey(DroolsSoftKeywords.QUERY))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_query_key5582); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_query_key5585); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14994,7 +15002,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1595:3: -> VK_QUERY[$id]
+            // 1602:3: -> VK_QUERY[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_QUERY, id));
 
@@ -15029,7 +15037,7 @@
     };
 
     // $ANTLR start "declare_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1598:1: declare_key : {...}? =>id= ID -> VK_DECLARE[$id] ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1605:1: declare_key : {...}? =>id= ID -> VK_DECLARE[$id] ;
     public final DRLParser.declare_key_return declare_key() throws RecognitionException {
         DRLParser.declare_key_return retval = new DRLParser.declare_key_return();
         retval.start = input.LT(1);
@@ -15042,14 +15050,14 @@
         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:1599:2: ({...}? =>id= ID -> VK_DECLARE[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1599:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1606:2: ({...}? =>id= ID -> VK_DECLARE[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1606:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "declare_key", "(validateIdentifierKey(DroolsSoftKeywords.DECLARE))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_declare_key5609); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_declare_key5612); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15068,7 +15076,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1601:3: -> VK_DECLARE[$id]
+            // 1608:3: -> VK_DECLARE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DECLARE, id));
 
@@ -15103,7 +15111,7 @@
     };
 
     // $ANTLR start "function_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1604:1: function_key : {...}? =>id= ID -> VK_FUNCTION[$id] ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1611:1: function_key : {...}? =>id= ID -> VK_FUNCTION[$id] ;
     public final DRLParser.function_key_return function_key() throws RecognitionException {
         DRLParser.function_key_return retval = new DRLParser.function_key_return();
         retval.start = input.LT(1);
@@ -15116,14 +15124,14 @@
         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:1605:2: ({...}? =>id= ID -> VK_FUNCTION[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1605:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1612:2: ({...}? =>id= ID -> VK_FUNCTION[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1612:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "function_key", "(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_function_key5636); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_function_key5639); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15142,7 +15150,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1607:3: -> VK_FUNCTION[$id]
+            // 1614:3: -> VK_FUNCTION[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_FUNCTION, id));
 
@@ -15177,7 +15185,7 @@
     };
 
     // $ANTLR start "global_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1610:1: global_key : {...}? =>id= ID -> VK_GLOBAL[$id] ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1617:1: global_key : {...}? =>id= ID -> VK_GLOBAL[$id] ;
     public final DRLParser.global_key_return global_key() throws RecognitionException {
         DRLParser.global_key_return retval = new DRLParser.global_key_return();
         retval.start = input.LT(1);
@@ -15190,14 +15198,14 @@
         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:1611:2: ({...}? =>id= ID -> VK_GLOBAL[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1611:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1618:2: ({...}? =>id= ID -> VK_GLOBAL[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1618:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "global_key", "(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_global_key5663); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_global_key5666); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15216,7 +15224,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1613:3: -> VK_GLOBAL[$id]
+            // 1620:3: -> VK_GLOBAL[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_GLOBAL, id));
 
@@ -15251,7 +15259,7 @@
     };
 
     // $ANTLR start "eval_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1616:1: eval_key : {...}? =>id= ID -> VK_EVAL[$id] ;
+    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1623:1: eval_key : {...}? =>id= ID -> VK_EVAL[$id] ;
     public final DRLParser.eval_key_return eval_key() throws RecognitionException {
         DRLParser.eval_key_return retval = new DRLParser.eval_key_return();
         retval.start = input.LT(1);
@@ -15264,14 +15272,14 @@
         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:1617:2: ({...}? =>id= ID -> VK_EVAL[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1617:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1624:2: ({...}? =>id= ID -> VK_EVAL[$id] )
+            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1624:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.EVAL)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "eval_key", "(validateIdentifierKey(DroolsSoftKeywords.EVAL))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_eval_key5690); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_eval_key5693); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15290,7 +15298,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1619:3: -> VK_EVAL[$id]
+            // 1626:3: -> VK_EVAL[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_EVAL, id));
 
@@ -15325,7 +15333,7 @@
     };
 
     // $ANTLR start "not_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1622:1: not_key : {...}? =>id= ID -> VK_NOT[$id] ;
+    // /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] ;
     public final DRLParser.not_key_return not_key() throws RecognitionException {
         DRLParser.not_key_return retval = new DRLParser.not_key_return();
         retval.start = input.LT(1);
@@ -15338,14 +15346,14 @@
         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:1623:2: ({...}? =>id= ID -> VK_NOT[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1623:4: {...}? =>id= ID
+            // /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
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "not_key", "(validateIdentifierKey(DroolsSoftKeywords.NOT))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_not_key5717); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_not_key5720); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15364,7 +15372,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1625:3: -> VK_NOT[$id]
+            // 1632:3: -> VK_NOT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_NOT, id));
 
@@ -15399,7 +15407,7 @@
     };
 
     // $ANTLR start "in_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1628:1: in_key : {...}? =>id= ID -> VK_IN[$id] ;
+    // /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] ;
     public final DRLParser.in_key_return in_key() throws RecognitionException {
         DRLParser.in_key_return retval = new DRLParser.in_key_return();
         retval.start = input.LT(1);
@@ -15412,14 +15420,14 @@
         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:1629:2: ({...}? =>id= ID -> VK_IN[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1629:4: {...}? =>id= ID
+            // /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
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "in_key", "(validateIdentifierKey(DroolsSoftKeywords.IN))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_in_key5744); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_in_key5747); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15438,7 +15446,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1631:3: -> VK_IN[$id]
+            // 1638:3: -> VK_IN[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_IN, id));
 
@@ -15473,7 +15481,7 @@
     };
 
     // $ANTLR start "or_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1634:1: or_key : {...}? =>id= ID -> VK_OR[$id] ;
+    // /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] ;
     public final DRLParser.or_key_return or_key() throws RecognitionException {
         DRLParser.or_key_return retval = new DRLParser.or_key_return();
         retval.start = input.LT(1);
@@ -15486,14 +15494,14 @@
         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:1635:2: ({...}? =>id= ID -> VK_OR[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1635:4: {...}? =>id= ID
+            // /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
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.OR)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "or_key", "(validateIdentifierKey(DroolsSoftKeywords.OR))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_or_key5771); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_or_key5774); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15512,7 +15520,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1637:3: -> VK_OR[$id]
+            // 1644:3: -> VK_OR[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_OR, id));
 
@@ -15547,7 +15555,7 @@
     };
 
     // $ANTLR start "and_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1640:1: and_key : {...}? =>id= ID -> VK_AND[$id] ;
+    // /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] ;
     public final DRLParser.and_key_return and_key() throws RecognitionException {
         DRLParser.and_key_return retval = new DRLParser.and_key_return();
         retval.start = input.LT(1);
@@ -15560,14 +15568,14 @@
         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:1641:2: ({...}? =>id= ID -> VK_AND[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1641:4: {...}? =>id= ID
+            // /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
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.AND)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "and_key", "(validateIdentifierKey(DroolsSoftKeywords.AND))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_and_key5798); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_and_key5801); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15586,7 +15594,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1643:3: -> VK_AND[$id]
+            // 1650:3: -> VK_AND[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_AND, id));
 
@@ -15621,7 +15629,7 @@
     };
 
     // $ANTLR start "exists_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1646:1: exists_key : {...}? =>id= ID -> VK_EXISTS[$id] ;
+    // /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] ;
     public final DRLParser.exists_key_return exists_key() throws RecognitionException {
         DRLParser.exists_key_return retval = new DRLParser.exists_key_return();
         retval.start = input.LT(1);
@@ -15634,14 +15642,14 @@
         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:1647:2: ({...}? =>id= ID -> VK_EXISTS[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1647:4: {...}? =>id= ID
+            // /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
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.EXISTS)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "exists_key", "(validateIdentifierKey(DroolsSoftKeywords.EXISTS))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_exists_key5825); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_exists_key5828); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15660,7 +15668,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1649:3: -> VK_EXISTS[$id]
+            // 1656:3: -> VK_EXISTS[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_EXISTS, id));
 
@@ -15695,7 +15703,7 @@
     };
 
     // $ANTLR start "forall_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1652:1: forall_key : {...}? =>id= ID -> VK_FORALL[$id] ;
+    // /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] ;
     public final DRLParser.forall_key_return forall_key() throws RecognitionException {
         DRLParser.forall_key_return retval = new DRLParser.forall_key_return();
         retval.start = input.LT(1);
@@ -15708,14 +15716,14 @@
         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:1653:2: ({...}? =>id= ID -> VK_FORALL[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1653:4: {...}? =>id= ID
+            // /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
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.FORALL)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "forall_key", "(validateIdentifierKey(DroolsSoftKeywords.FORALL))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_forall_key5852); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_forall_key5855); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15734,7 +15742,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1655:3: -> VK_FORALL[$id]
+            // 1662:3: -> VK_FORALL[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_FORALL, id));
 
@@ -15769,7 +15777,7 @@
     };
 
     // $ANTLR start "action_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1658:1: action_key : {...}? =>id= ID -> VK_ACTION[$id] ;
+    // /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] ;
     public final DRLParser.action_key_return action_key() throws RecognitionException {
         DRLParser.action_key_return retval = new DRLParser.action_key_return();
         retval.start = input.LT(1);
@@ -15782,14 +15790,14 @@
         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:1659:2: ({...}? =>id= ID -> VK_ACTION[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1659:4: {...}? =>id= ID
+            // /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
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.ACTION)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "action_key", "(validateIdentifierKey(DroolsSoftKeywords.ACTION))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_action_key5879); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_action_key5882); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15808,7 +15816,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1661:3: -> VK_ACTION[$id]
+            // 1668:3: -> VK_ACTION[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ACTION, id));
 
@@ -15843,7 +15851,7 @@
     };
 
     // $ANTLR start "reverse_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1664:1: reverse_key : {...}? =>id= ID -> VK_REVERSE[$id] ;
+    // /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] ;
     public final DRLParser.reverse_key_return reverse_key() throws RecognitionException {
         DRLParser.reverse_key_return retval = new DRLParser.reverse_key_return();
         retval.start = input.LT(1);
@@ -15856,14 +15864,14 @@
         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:1665:2: ({...}? =>id= ID -> VK_REVERSE[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1665:4: {...}? =>id= ID
+            // /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
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.REVERSE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "reverse_key", "(validateIdentifierKey(DroolsSoftKeywords.REVERSE))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_reverse_key5906); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_reverse_key5909); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15882,7 +15890,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1667:3: -> VK_REVERSE[$id]
+            // 1674:3: -> VK_REVERSE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_REVERSE, id));
 
@@ -15917,7 +15925,7 @@
     };
 
     // $ANTLR start "result_key"
-    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1670:1: result_key : {...}? =>id= ID -> VK_RESULT[$id] ;
+    // /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] ;
     public final DRLParser.result_key_return result_key() throws RecognitionException {
         DRLParser.result_key_return retval = new DRLParser.result_key_return();
         retval.start = input.LT(1);
@@ -15930,14 +15938,14 @@
         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:1671:2: ({...}? =>id= ID -> VK_RESULT[$id] )
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1671:4: {...}? =>id= ID
+            // /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
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.RESULT)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "result_key", "(validateIdentifierKey(DroolsSoftKeywords.RESULT))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_result_key5933); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_result_key5936); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15956,7 +15964,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1673:3: -> VK_RESULT[$id]
+            // 1680:3: -> VK_RESULT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_RESULT, id));
 
@@ -15987,11 +15995,11 @@
 
     // $ANTLR start synpred1_DRL
     public final void synpred1_DRL_fragment() throws RecognitionException {   
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:802:5: ( LEFT_PAREN or_key )
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:802:6: LEFT_PAREN or_key
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:809:5: ( LEFT_PAREN or_key )
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:809:6: LEFT_PAREN or_key
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred1_DRL2030); if (state.failed) return ;
-        pushFollow(FOLLOW_or_key_in_synpred1_DRL2032);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred1_DRL2033); if (state.failed) return ;
+        pushFollow(FOLLOW_or_key_in_synpred1_DRL2035);
         or_key();
 
         state._fsp--;
@@ -16003,7 +16011,7 @@
 
     // $ANTLR start synpred2_DRL
     public final void synpred2_DRL_fragment() throws RecognitionException {   
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:810:5: ( or_key | DOUBLE_PIPE )
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:817:5: ( or_key | DOUBLE_PIPE )
         int alt105=2;
         int LA105_0 = input.LA(1);
 
@@ -16022,9 +16030,9 @@
         }
         switch (alt105) {
             case 1 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:810:6: or_key
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:817:6: or_key
                 {
-                pushFollow(FOLLOW_or_key_in_synpred2_DRL2099);
+                pushFollow(FOLLOW_or_key_in_synpred2_DRL2102);
                 or_key();
 
                 state._fsp--;
@@ -16033,9 +16041,9 @@
                 }
                 break;
             case 2 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:810:13: DOUBLE_PIPE
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:817:13: DOUBLE_PIPE
                 {
-                match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_synpred2_DRL2101); if (state.failed) return ;
+                match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_synpred2_DRL2104); if (state.failed) return ;
 
                 }
                 break;
@@ -16045,11 +16053,11 @@
 
     // $ANTLR start synpred3_DRL
     public final void synpred3_DRL_fragment() throws RecognitionException {   
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:819:5: ( LEFT_PAREN and_key )
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:819:6: LEFT_PAREN and_key
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:826:5: ( LEFT_PAREN and_key )
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:826:6: LEFT_PAREN and_key
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred3_DRL2158); if (state.failed) return ;
-        pushFollow(FOLLOW_and_key_in_synpred3_DRL2160);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred3_DRL2161); if (state.failed) return ;
+        pushFollow(FOLLOW_and_key_in_synpred3_DRL2163);
         and_key();
 
         state._fsp--;
@@ -16061,7 +16069,7 @@
 
     // $ANTLR start synpred4_DRL
     public final void synpred4_DRL_fragment() throws RecognitionException {   
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:827:5: ( and_key | DOUBLE_AMPER )
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:834:5: ( and_key | DOUBLE_AMPER )
         int alt106=2;
         int LA106_0 = input.LA(1);
 
@@ -16080,9 +16088,9 @@
         }
         switch (alt106) {
             case 1 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:827:6: and_key
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:834:6: and_key
                 {
-                pushFollow(FOLLOW_and_key_in_synpred4_DRL2228);
+                pushFollow(FOLLOW_and_key_in_synpred4_DRL2231);
                 and_key();
 
                 state._fsp--;
@@ -16091,9 +16099,9 @@
                 }
                 break;
             case 2 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:827:14: DOUBLE_AMPER
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:834:14: DOUBLE_AMPER
                 {
-                match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_synpred4_DRL2230); if (state.failed) return ;
+                match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_synpred4_DRL2233); if (state.failed) return ;
 
                 }
                 break;
@@ -16103,10 +16111,10 @@
 
     // $ANTLR start synpred5_DRL
     public final void synpred5_DRL_fragment() throws RecognitionException {   
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:844:4: ( SEMICOLON )
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:844:5: SEMICOLON
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:851:4: ( SEMICOLON )
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:851:5: SEMICOLON
         {
-        match(input,SEMICOLON,FOLLOW_SEMICOLON_in_synpred5_DRL2353); if (state.failed) return ;
+        match(input,SEMICOLON,FOLLOW_SEMICOLON_in_synpred5_DRL2356); if (state.failed) return ;
 
         }
     }
@@ -16114,11 +16122,11 @@
 
     // $ANTLR start synpred6_DRL
     public final void synpred6_DRL_fragment() throws RecognitionException {   
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:850:12: ( LEFT_PAREN ( or_key | and_key ) )
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:850:13: LEFT_PAREN ( or_key | and_key )
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:857:12: ( LEFT_PAREN ( or_key | and_key ) )
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:857:13: LEFT_PAREN ( or_key | and_key )
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred6_DRL2390); if (state.failed) return ;
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:850:24: ( or_key | and_key )
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred6_DRL2393); if (state.failed) return ;
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:857:24: ( or_key | and_key )
         int alt107=2;
         int LA107_0 = input.LA(1);
 
@@ -16148,9 +16156,9 @@
         }
         switch (alt107) {
             case 1 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:850:25: or_key
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:857:25: or_key
                 {
-                pushFollow(FOLLOW_or_key_in_synpred6_DRL2393);
+                pushFollow(FOLLOW_or_key_in_synpred6_DRL2396);
                 or_key();
 
                 state._fsp--;
@@ -16159,9 +16167,9 @@
                 }
                 break;
             case 2 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:850:32: and_key
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:857:32: and_key
                 {
-                pushFollow(FOLLOW_and_key_in_synpred6_DRL2395);
+                pushFollow(FOLLOW_and_key_in_synpred6_DRL2398);
                 and_key();
 
                 state._fsp--;
@@ -16179,11 +16187,11 @@
 
     // $ANTLR start synpred7_DRL
     public final void synpred7_DRL_fragment() throws RecognitionException {   
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:866:5: ( LEFT_PAREN ( or_key | and_key ) )
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:866:6: LEFT_PAREN ( or_key | and_key )
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:873:5: ( LEFT_PAREN ( or_key | and_key ) )
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:873:6: LEFT_PAREN ( or_key | and_key )
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred7_DRL2518); if (state.failed) return ;
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:866:17: ( or_key | and_key )
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred7_DRL2521); if (state.failed) return ;
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:873:17: ( or_key | and_key )
         int alt108=2;
         int LA108_0 = input.LA(1);
 
@@ -16213,9 +16221,9 @@
         }
         switch (alt108) {
             case 1 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:866:18: or_key
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:873:18: or_key
                 {
-                pushFollow(FOLLOW_or_key_in_synpred7_DRL2521);
+                pushFollow(FOLLOW_or_key_in_synpred7_DRL2524);
                 or_key();
 
                 state._fsp--;
@@ -16224,9 +16232,9 @@
                 }
                 break;
             case 2 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:866:25: and_key
+                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:873:25: and_key
                 {
-                pushFollow(FOLLOW_and_key_in_synpred7_DRL2523);
+                pushFollow(FOLLOW_and_key_in_synpred7_DRL2526);
                 and_key();
 
                 state._fsp--;
@@ -16244,10 +16252,10 @@
 
     // $ANTLR start synpred8_DRL
     public final void synpred8_DRL_fragment() throws RecognitionException {   
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1043:5: ( LEFT_PAREN )
-        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1043:6: LEFT_PAREN
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1050:5: ( LEFT_PAREN )
+        // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1050:6: LEFT_PAREN
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred8_DRL3352); if (state.failed) return ;
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred8_DRL3355); if (state.failed) return ;
 
         }
     }
@@ -17053,7 +17061,7 @@
             this.transition = DFA69_transition;
         }
         public String getDescription() {
-            return "1043:3: ( ( LEFT_PAREN )=>args= paren_chunk )?";
+            return "1050:3: ( ( LEFT_PAREN )=>args= paren_chunk )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -17142,7 +17150,7 @@
             this.transition = DFA71_transition;
         }
         public String getDescription() {
-            return "1057:4: ({...}? paren_chunk | square_chunk )?";
+            return "1064:4: ({...}? paren_chunk | square_chunk )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -17231,7 +17239,7 @@
             this.transition = DFA81_transition;
         }
         public String getDescription() {
-            return "1130:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );";
+            return "1137:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -17350,7 +17358,7 @@
             this.transition = DFA86_transition;
         }
         public String getDescription() {
-            return "1194:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );";
+            return "1201:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -17681,318 +17689,318 @@
     public static final BitSet FOLLOW_ruleflow_group_in_rule_attribute1692 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_lock_on_active_in_rule_attribute1698 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_dialect_in_rule_attribute1703 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_effective_key_in_date_effective1715 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_STRING_in_date_effective1720 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_expires_key_in_date_expires1734 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_STRING_in_date_expires1739 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enabled_key_in_enabled1754 = new BitSet(new long[]{0x0000000000000000L,0x0000000010200000L});
-    public static final BitSet FOLLOW_BOOL_in_enabled1767 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_enabled1778 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_salience_key_in_salience1798 = new BitSet(new long[]{0x0000000000000000L,0x0000000020200000L});
-    public static final BitSet FOLLOW_INT_in_salience1807 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_salience1816 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_no_loop_key_in_no_loop1831 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
-    public static final BitSet FOLLOW_BOOL_in_no_loop1836 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_auto_focus_key_in_auto_focus1851 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
-    public static final BitSet FOLLOW_BOOL_in_auto_focus1856 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_activation_group_key_in_activation_group1873 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_STRING_in_activation_group1878 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ruleflow_group_key_in_ruleflow_group1892 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_STRING_in_ruleflow_group1897 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_agenda_group_key_in_agenda_group1911 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_STRING_in_agenda_group1916 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_duration_key_in_duration1930 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
-    public static final BitSet FOLLOW_INT_in_duration1935 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_dialect_key_in_dialect1951 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_STRING_in_dialect1956 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lock_on_active_key_in_lock_on_active1974 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
-    public static final BitSet FOLLOW_BOOL_in_lock_on_active1979 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_in_normal_lhs_block1994 = new BitSet(new long[]{0x0000000000000002L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs2015 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2039 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_or_key_in_lhs_or2049 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2057 = new BitSet(new long[]{0x0000000000000000L,0x0000000000A10000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2063 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2086 = new BitSet(new long[]{0x0000000000000002L,0x0000000040010000L});
-    public static final BitSet FOLLOW_or_key_in_lhs_or2108 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_lhs_or2115 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2126 = new BitSet(new long[]{0x0000000000000002L,0x0000000040010000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_and2167 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_and_key_in_lhs_and2177 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2185 = new BitSet(new long[]{0x0000000000000000L,0x0000000000A10000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_and2191 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2215 = new BitSet(new long[]{0x0000000000000002L,0x0000000080010000L});
-    public static final BitSet FOLLOW_and_key_in_lhs_and2237 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_lhs_and2244 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2255 = new BitSet(new long[]{0x0000000000000002L,0x0000000080010000L});
-    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary2286 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_lhs_not_binding_in_lhs_unary2294 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_lhs_not_in_lhs_unary2300 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary2306 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary2312 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary2318 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_unary2329 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary2335 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_pattern_source_in_lhs_unary2343 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_lhs_unary2357 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_exists_key_in_lhs_exist2373 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2400 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist2407 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2415 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist2422 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_exist2437 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_not_key_in_lhs_not_binding2483 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_fact_binding_in_lhs_not_binding2485 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_not_key_in_lhs_not2508 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_not2530 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not2537 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_not2546 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not2552 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_not2562 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_eval_key_in_lhs_eval2601 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval2610 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forall_key_in_lhs_forall2637 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall2642 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_forall2650 = new BitSet(new long[]{0x0000000000000000L,0x0000000000A10000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall2656 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_pattern_source2692 = new BitSet(new long[]{0x0000000000000002L,0x0000000300000000L});
-    public static final BitSet FOLLOW_over_clause_in_pattern_source2696 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_FROM_in_pattern_source2706 = new BitSet(new long[]{0x0000000000000000L,0x0000001400010000L});
-    public static final BitSet FOLLOW_accumulate_statement_in_pattern_source2726 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_collect_statement_in_pattern_source2742 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_entrypoint_statement_in_pattern_source2759 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_from_source_in_pattern_source2775 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_OVER_in_over_clause2807 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_over_elements_in_over_clause2812 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
-    public static final BitSet FOLLOW_COMMA_in_over_clause2819 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_over_elements_in_over_clause2824 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
-    public static final BitSet FOLLOW_ID_in_over_elements2839 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_COLON_in_over_elements2846 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_over_elements2855 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_paren_chunk_in_over_elements2862 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ACCUMULATE_in_accumulate_statement2888 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement2897 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_or_in_accumulate_statement2905 = new BitSet(new long[]{0x0000000000000000L,0x0000000800410000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_statement2910 = new BitSet(new long[]{0x0000000000000000L,0x0000000800410000L});
-    public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_statement2920 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_statement2926 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement2934 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INIT_in_accumulate_init_clause2980 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause2991 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause2996 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
-    public static final BitSet FOLLOW_action_key_in_accumulate_init_clause3007 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3011 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3016 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
-    public static final BitSet FOLLOW_reverse_key_in_accumulate_init_clause3028 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3032 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3037 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
-    public static final BitSet FOLLOW_result_key_in_accumulate_init_clause3053 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3059 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3117 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3141 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_set_in_accumulate_paren_chunk_data3153 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3169 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3180 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_accumulate_id_clause3196 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_id_clause3202 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_COLLECT_in_collect_statement3224 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement3233 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_pattern_source_in_collect_statement3240 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement3245 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_entry_point_key_in_entrypoint_statement3272 = new BitSet(new long[]{0x0000000000000000L,0x0000000000110000L});
-    public static final BitSet FOLLOW_entrypoint_id_in_entrypoint_statement3280 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_entrypoint_id3306 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_entrypoint_id3323 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_from_source3343 = new BitSet(new long[]{0x0000000000000002L,0x0000000000220000L});
-    public static final BitSet FOLLOW_paren_chunk_in_from_source3358 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_expression_chain_in_from_source3365 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOT_in_expression_chain3398 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_expression_chain3405 = new BitSet(new long[]{0x0000000000000002L,0x0000400000220000L});
-    public static final BitSet FOLLOW_paren_chunk_in_expression_chain3421 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_square_chunk_in_expression_chain3435 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_expression_chain_in_expression_chain3446 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_binding_in_lhs_pattern3479 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_lhs_pattern3492 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_label_in_fact_binding3512 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_fact_in_fact_binding3518 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_binding3525 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_fact_binding_expression_in_fact_binding3533 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_binding3541 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_fact_binding_expression3582 = new BitSet(new long[]{0x0000000000000002L,0x0000000040010000L});
-    public static final BitSet FOLLOW_or_key_in_fact_binding_expression3594 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_binding_expression3600 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_fact_in_fact_binding_expression3605 = new BitSet(new long[]{0x0000000000000002L,0x0000000040010000L});
-    public static final BitSet FOLLOW_pattern_type_in_fact3645 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact3650 = new BitSet(new long[]{0x0000000000000000L,0x0000000000A10000L});
-    public static final BitSet FOLLOW_constraints_in_fact3661 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact3667 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_constraint_in_constraints3701 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
-    public static final BitSet FOLLOW_COMMA_in_constraints3705 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_constraint_in_constraints3712 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
-    public static final BitSet FOLLOW_or_constr_in_constraint3726 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_constr_in_or_constr3737 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_constr3741 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_and_constr_in_or_constr3748 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000000L});
-    public static final BitSet FOLLOW_unary_constr_in_and_constr3763 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_constr3767 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_unary_constr_in_and_constr3774 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
-    public static final BitSet FOLLOW_eval_key_in_unary_constr3807 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_paren_chunk_in_unary_constr3810 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_field_constraint_in_unary_constr3815 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_unary_constr3821 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_or_constr_in_unary_constr3831 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_unary_constr3836 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_label_in_field_constraint3856 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_accessor_path_in_field_constraint3858 = new BitSet(new long[]{0x0000000000000002L,0x00000FE000210000L});
-    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3865 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ARROW_in_field_constraint3871 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_paren_chunk_in_field_constraint3875 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_path_in_field_constraint3929 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000210000L});
-    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3931 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_label3956 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_COLON_in_label3963 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective3984 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_restr_connective3990 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000210000L});
-    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective3998 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000000L});
-    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective4019 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_restr_connective4025 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000210000L});
-    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective4032 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
-    public static final BitSet FOLLOW_compound_operator_in_constraint_expression4060 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_simple_operator_in_constraint_expression4065 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_constraint_expression4070 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000210000L});
-    public static final BitSet FOLLOW_or_restr_connective_in_constraint_expression4079 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_constraint_expression4084 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EQUAL_in_simple_operator4119 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
-    public static final BitSet FOLLOW_GREATER_in_simple_operator4127 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
-    public static final BitSet FOLLOW_GREATER_EQUAL_in_simple_operator4135 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
-    public static final BitSet FOLLOW_LESS_in_simple_operator4143 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
-    public static final BitSet FOLLOW_LESS_EQUAL_in_simple_operator4151 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
-    public static final BitSet FOLLOW_NOT_EQUAL_in_simple_operator4159 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
-    public static final BitSet FOLLOW_not_key_in_simple_operator4167 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000010000L});
-    public static final BitSet FOLLOW_operator_key_in_simple_operator4174 = new BitSet(new long[]{0x0000000000000000L,0x0000700030310000L});
-    public static final BitSet FOLLOW_square_chunk_in_simple_operator4177 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
-    public static final BitSet FOLLOW_expression_value_in_simple_operator4189 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_in_key_in_compound_operator4211 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_not_key_in_compound_operator4216 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_in_key_in_compound_operator4218 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_compound_operator4229 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
-    public static final BitSet FOLLOW_expression_value_in_compound_operator4237 = new BitSet(new long[]{0x0000000000000000L,0x0000000000C00000L});
-    public static final BitSet FOLLOW_COMMA_in_compound_operator4241 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
-    public static final BitSet FOLLOW_expression_value_in_compound_operator4246 = new BitSet(new long[]{0x0000000000000000L,0x0000000000C00000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_compound_operator4254 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_operator_key4285 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_neg_operator_key4330 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_path_in_expression_value4367 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_constraint_in_expression_value4372 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_expression_value4378 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_literal_constraint4397 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INT_in_literal_constraint4404 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FLOAT_in_literal_constraint4411 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BOOL_in_literal_constraint4418 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_literal_constraint4425 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_pattern_type4440 = new BitSet(new long[]{0x0000000000000002L,0x0000400000020000L});
-    public static final BitSet FOLLOW_DOT_in_pattern_type4446 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_pattern_type4450 = new BitSet(new long[]{0x0000000000000002L,0x0000400000020000L});
-    public static final BitSet FOLLOW_dimension_definition_in_pattern_type4465 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
-    public static final BitSet FOLLOW_ID_in_data_type4493 = new BitSet(new long[]{0x0000000000000002L,0x0000400000020000L});
-    public static final BitSet FOLLOW_DOT_in_data_type4499 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_data_type4503 = new BitSet(new long[]{0x0000000000000002L,0x0000400000020000L});
-    public static final BitSet FOLLOW_dimension_definition_in_data_type4508 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition4537 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dimension_definition4544 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_element_in_accessor_path4558 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_DOT_in_accessor_path4562 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_accessor_element_in_accessor_path4566 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_ID_in_accessor_element4590 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
-    public static final BitSet FOLLOW_square_chunk_in_accessor_element4596 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
-    public static final BitSet FOLLOW_rhs_chunk_data_in_rhs_chunk4625 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_THEN_in_rhs_chunk_data4644 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_set_in_rhs_chunk_data4657 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_END_in_rhs_chunk_data4670 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_rhs_chunk_data4676 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk4695 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk_data4718 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_set_in_curly_chunk_data4730 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk_data4746 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk_data4757 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk4778 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk_data4802 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_set_in_paren_chunk_data4814 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk_data4830 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk_data4841 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk4862 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk_data4885 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_set_in_square_chunk_data4897 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk_data4912 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk_data4923 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key4947 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_lock_on_active_key4951 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key4955 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_lock_on_active_key4959 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key4963 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_date_effective_key4995 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_date_effective_key4999 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_date_effective_key5003 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_date_expires_key5035 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_date_expires_key5039 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_date_expires_key5043 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_no_loop_key5075 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_no_loop_key5079 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_no_loop_key5083 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_auto_focus_key5115 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_auto_focus_key5119 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_auto_focus_key5123 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_activation_group_key5155 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_activation_group_key5159 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_activation_group_key5163 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_agenda_group_key5195 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_agenda_group_key5199 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_agenda_group_key5203 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_ruleflow_group_key5235 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_ruleflow_group_key5239 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_ruleflow_group_key5243 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_entry_point_key5275 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_entry_point_key5279 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_entry_point_key5283 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_duration_key5312 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_package_key5339 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_import_key5366 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_dialect_key5393 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_salience_key5420 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_enabled_key5447 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_attributes_key5474 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_rule_key5501 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_extend_key5528 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_template_key5555 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_query_key5582 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_declare_key5609 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_function_key5636 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_global_key5663 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_eval_key5690 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_not_key5717 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_in_key5744 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_or_key5771 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_and_key5798 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_exists_key5825 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_forall_key5852 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_action_key5879 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_reverse_key5906 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_result_key5933 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred1_DRL2030 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_or_key_in_synpred1_DRL2032 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_or_key_in_synpred2_DRL2099 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_synpred2_DRL2101 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred3_DRL2158 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_and_key_in_synpred3_DRL2160 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred4_DRL2228 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_synpred4_DRL2230 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SEMICOLON_in_synpred5_DRL2353 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred6_DRL2390 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_or_key_in_synpred6_DRL2393 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred6_DRL2395 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred7_DRL2518 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_or_key_in_synpred7_DRL2521 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred7_DRL2523 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred8_DRL3352 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_effective_key_in_date_effective1718 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_STRING_in_date_effective1723 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_expires_key_in_date_expires1737 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_STRING_in_date_expires1742 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enabled_key_in_enabled1757 = new BitSet(new long[]{0x0000000000000000L,0x0000000010200000L});
+    public static final BitSet FOLLOW_BOOL_in_enabled1770 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_enabled1781 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_salience_key_in_salience1801 = new BitSet(new long[]{0x0000000000000000L,0x0000000020200000L});
+    public static final BitSet FOLLOW_INT_in_salience1810 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_salience1819 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_no_loop_key_in_no_loop1834 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
+    public static final BitSet FOLLOW_BOOL_in_no_loop1839 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_auto_focus_key_in_auto_focus1854 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
+    public static final BitSet FOLLOW_BOOL_in_auto_focus1859 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_activation_group_key_in_activation_group1876 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_STRING_in_activation_group1881 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleflow_group_key_in_ruleflow_group1895 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_STRING_in_ruleflow_group1900 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_agenda_group_key_in_agenda_group1914 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_STRING_in_agenda_group1919 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_duration_key_in_duration1933 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+    public static final BitSet FOLLOW_INT_in_duration1938 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_dialect_key_in_dialect1954 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_STRING_in_dialect1959 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lock_on_active_key_in_lock_on_active1977 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
+    public static final BitSet FOLLOW_BOOL_in_lock_on_active1982 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_in_normal_lhs_block1997 = new BitSet(new long[]{0x0000000000000002L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs2018 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2042 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_or_key_in_lhs_or2052 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2060 = new BitSet(new long[]{0x0000000000000000L,0x0000000000A10000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2066 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2089 = new BitSet(new long[]{0x0000000000000002L,0x0000000040010000L});
+    public static final BitSet FOLLOW_or_key_in_lhs_or2111 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_lhs_or2118 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2129 = new BitSet(new long[]{0x0000000000000002L,0x0000000040010000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_and2170 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_and_key_in_lhs_and2180 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2188 = new BitSet(new long[]{0x0000000000000000L,0x0000000000A10000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_and2194 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2218 = new BitSet(new long[]{0x0000000000000002L,0x0000000080010000L});
+    public static final BitSet FOLLOW_and_key_in_lhs_and2240 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_lhs_and2247 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2258 = new BitSet(new long[]{0x0000000000000002L,0x0000000080010000L});
+    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary2289 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_lhs_not_binding_in_lhs_unary2297 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_lhs_not_in_lhs_unary2303 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary2309 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary2315 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary2321 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_unary2332 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary2338 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_pattern_source_in_lhs_unary2346 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_lhs_unary2360 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_exists_key_in_lhs_exist2376 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2403 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist2410 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2418 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist2425 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_exist2440 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_key_in_lhs_not_binding2486 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_fact_binding_in_lhs_not_binding2488 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_key_in_lhs_not2511 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_not2533 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not2540 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_not2549 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not2555 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_not2565 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_eval_key_in_lhs_eval2604 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval2613 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forall_key_in_lhs_forall2640 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall2645 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_forall2653 = new BitSet(new long[]{0x0000000000000000L,0x0000000000A10000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall2659 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_pattern_source2695 = new BitSet(new long[]{0x0000000000000002L,0x0000000300000000L});
+    public static final BitSet FOLLOW_over_clause_in_pattern_source2699 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
+    public static final BitSet FOLLOW_FROM_in_pattern_source2709 = new BitSet(new long[]{0x0000000000000000L,0x0000001400010000L});
+    public static final BitSet FOLLOW_accumulate_statement_in_pattern_source2729 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_collect_statement_in_pattern_source2745 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entrypoint_statement_in_pattern_source2762 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_from_source_in_pattern_source2778 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_OVER_in_over_clause2810 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_over_elements_in_over_clause2815 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
+    public static final BitSet FOLLOW_COMMA_in_over_clause2822 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_over_elements_in_over_clause2827 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
+    public static final BitSet FOLLOW_ID_in_over_elements2842 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
+    public static final BitSet FOLLOW_COLON_in_over_elements2849 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_over_elements2858 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_paren_chunk_in_over_elements2865 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACCUMULATE_in_accumulate_statement2891 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement2900 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_lhs_or_in_accumulate_statement2908 = new BitSet(new long[]{0x0000000000000000L,0x0000000800410000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_statement2913 = new BitSet(new long[]{0x0000000000000000L,0x0000000800410000L});
+    public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_statement2923 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_statement2929 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement2937 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INIT_in_accumulate_init_clause2983 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause2994 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause2999 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
+    public static final BitSet FOLLOW_action_key_in_accumulate_init_clause3010 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3014 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3019 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
+    public static final BitSet FOLLOW_reverse_key_in_accumulate_init_clause3031 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3035 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3040 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
+    public static final BitSet FOLLOW_result_key_in_accumulate_init_clause3056 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3062 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3120 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3144 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_set_in_accumulate_paren_chunk_data3156 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3172 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3183 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_accumulate_id_clause3199 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_id_clause3205 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COLLECT_in_collect_statement3227 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement3236 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_pattern_source_in_collect_statement3243 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement3248 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entry_point_key_in_entrypoint_statement3275 = new BitSet(new long[]{0x0000000000000000L,0x0000000000110000L});
+    public static final BitSet FOLLOW_entrypoint_id_in_entrypoint_statement3283 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_entrypoint_id3309 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_entrypoint_id3326 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_from_source3346 = new BitSet(new long[]{0x0000000000000002L,0x0000000000220000L});
+    public static final BitSet FOLLOW_paren_chunk_in_from_source3361 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_expression_chain_in_from_source3368 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOT_in_expression_chain3401 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_expression_chain3408 = new BitSet(new long[]{0x0000000000000002L,0x0000400000220000L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_chain3424 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_square_chunk_in_expression_chain3438 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_expression_chain_in_expression_chain3449 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_binding_in_lhs_pattern3482 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_lhs_pattern3495 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_label_in_fact_binding3515 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_fact_in_fact_binding3521 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_binding3528 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_fact_binding_expression_in_fact_binding3536 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_binding3544 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_fact_binding_expression3585 = new BitSet(new long[]{0x0000000000000002L,0x0000000040010000L});
+    public static final BitSet FOLLOW_or_key_in_fact_binding_expression3597 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_binding_expression3603 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_fact_in_fact_binding_expression3608 = new BitSet(new long[]{0x0000000000000002L,0x0000000040010000L});
+    public static final BitSet FOLLOW_pattern_type_in_fact3648 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact3653 = new BitSet(new long[]{0x0000000000000000L,0x0000000000A10000L});
+    public static final BitSet FOLLOW_constraints_in_fact3664 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact3670 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_constraint_in_constraints3704 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
+    public static final BitSet FOLLOW_COMMA_in_constraints3708 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_constraint_in_constraints3715 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
+    public static final BitSet FOLLOW_or_constr_in_constraint3729 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr3740 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_constr3744 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr3751 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000000L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr3766 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_constr3770 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr3777 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
+    public static final BitSet FOLLOW_eval_key_in_unary_constr3810 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_paren_chunk_in_unary_constr3813 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_field_constraint_in_unary_constr3818 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_unary_constr3824 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_or_constr_in_unary_constr3834 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_unary_constr3839 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_label_in_field_constraint3859 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_accessor_path_in_field_constraint3861 = new BitSet(new long[]{0x0000000000000002L,0x00000FE000210000L});
+    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3868 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ARROW_in_field_constraint3874 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_paren_chunk_in_field_constraint3878 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_path_in_field_constraint3932 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000210000L});
+    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3934 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_label3959 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
+    public static final BitSet FOLLOW_COLON_in_label3966 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective3987 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_restr_connective3993 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000210000L});
+    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective4001 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000000L});
+    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective4022 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_restr_connective4028 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000210000L});
+    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective4035 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
+    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,0x00000FC000210000L});
+    public static final BitSet FOLLOW_or_restr_connective_in_constraint_expression4082 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_constraint_expression4087 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EQUAL_in_simple_operator4122 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
+    public static final BitSet FOLLOW_GREATER_in_simple_operator4130 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
+    public static final BitSet FOLLOW_GREATER_EQUAL_in_simple_operator4138 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
+    public static final BitSet FOLLOW_LESS_in_simple_operator4146 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
+    public static final BitSet FOLLOW_LESS_EQUAL_in_simple_operator4154 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
+    public static final BitSet FOLLOW_NOT_EQUAL_in_simple_operator4162 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
+    public static final BitSet FOLLOW_not_key_in_simple_operator4170 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000010000L});
+    public static final BitSet FOLLOW_operator_key_in_simple_operator4177 = new BitSet(new long[]{0x0000000000000000L,0x0000700030310000L});
+    public static final BitSet FOLLOW_square_chunk_in_simple_operator4180 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
+    public static final BitSet FOLLOW_expression_value_in_simple_operator4192 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_in_key_in_compound_operator4214 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_not_key_in_compound_operator4219 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_in_key_in_compound_operator4221 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_compound_operator4232 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
+    public static final BitSet FOLLOW_expression_value_in_compound_operator4240 = new BitSet(new long[]{0x0000000000000000L,0x0000000000C00000L});
+    public static final BitSet FOLLOW_COMMA_in_compound_operator4244 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
+    public static final BitSet FOLLOW_expression_value_in_compound_operator4249 = new BitSet(new long[]{0x0000000000000000L,0x0000000000C00000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_compound_operator4257 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_operator_key4288 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_neg_operator_key4333 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_path_in_expression_value4370 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_constraint_in_expression_value4375 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_value4381 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_literal_constraint4400 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_literal_constraint4407 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_literal_constraint4414 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_literal_constraint4421 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_literal_constraint4428 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_pattern_type4443 = new BitSet(new long[]{0x0000000000000002L,0x0000400000020000L});
+    public static final BitSet FOLLOW_DOT_in_pattern_type4449 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_pattern_type4453 = new BitSet(new long[]{0x0000000000000002L,0x0000400000020000L});
+    public static final BitSet FOLLOW_dimension_definition_in_pattern_type4468 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_ID_in_data_type4496 = new BitSet(new long[]{0x0000000000000002L,0x0000400000020000L});
+    public static final BitSet FOLLOW_DOT_in_data_type4502 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_data_type4506 = new BitSet(new long[]{0x0000000000000002L,0x0000400000020000L});
+    public static final BitSet FOLLOW_dimension_definition_in_data_type4511 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition4540 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dimension_definition4547 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_element_in_accessor_path4561 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_DOT_in_accessor_path4565 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_accessor_element_in_accessor_path4569 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_ID_in_accessor_element4593 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_square_chunk_in_accessor_element4599 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_rhs_chunk_data_in_rhs_chunk4628 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_THEN_in_rhs_chunk_data4647 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_set_in_rhs_chunk_data4660 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_END_in_rhs_chunk_data4673 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_rhs_chunk_data4679 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk4698 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk_data4721 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_set_in_curly_chunk_data4733 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk_data4749 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk_data4760 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk4781 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk_data4805 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_set_in_paren_chunk_data4817 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk_data4833 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk_data4844 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk4865 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk_data4888 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_set_in_square_chunk_data4900 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk_data4915 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk_data4926 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key4950 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_lock_on_active_key4954 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key4958 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_lock_on_active_key4962 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key4966 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_date_effective_key4998 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_date_effective_key5002 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_date_effective_key5006 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_date_expires_key5038 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_date_expires_key5042 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_date_expires_key5046 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_no_loop_key5078 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_no_loop_key5082 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_no_loop_key5086 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_auto_focus_key5118 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_auto_focus_key5122 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_auto_focus_key5126 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_activation_group_key5158 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_activation_group_key5162 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_activation_group_key5166 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_agenda_group_key5198 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_agenda_group_key5202 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_agenda_group_key5206 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_ruleflow_group_key5238 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_ruleflow_group_key5242 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_ruleflow_group_key5246 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_entry_point_key5278 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_entry_point_key5282 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_entry_point_key5286 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_duration_key5315 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_package_key5342 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_import_key5369 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_dialect_key5396 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_salience_key5423 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_enabled_key5450 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_attributes_key5477 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_rule_key5504 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_extend_key5531 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_template_key5558 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_query_key5585 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_declare_key5612 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_function_key5639 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_global_key5666 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_eval_key5693 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_not_key5720 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_in_key5747 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_or_key5774 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_and_key5801 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_exists_key5828 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_forall_key5855 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_action_key5882 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_reverse_key5909 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_result_key5936 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred1_DRL2033 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_or_key_in_synpred1_DRL2035 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_or_key_in_synpred2_DRL2102 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_synpred2_DRL2104 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred3_DRL2161 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_and_key_in_synpred3_DRL2163 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred4_DRL2231 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_synpred4_DRL2233 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SEMICOLON_in_synpred5_DRL2356 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred6_DRL2393 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_or_key_in_synpred6_DRL2396 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred6_DRL2398 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred7_DRL2521 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_or_key_in_synpred7_DRL2524 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred7_DRL2526 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred8_DRL3355 = new BitSet(new long[]{0x0000000000000002L});
 
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DroolsSentenceType.java
===================================================================
--- labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DroolsSentenceType.java	2008-11-24 23:31:46 UTC (rev 24077)
+++ labs/jbossrules/branches/etirelli/drools-compiler/src/main/java/org/drools/lang/DroolsSentenceType.java	2008-11-25 00:10:23 UTC (rev 24078)
@@ -8,5 +8,5 @@
  * @see DroolsSentence
  */
 public enum DroolsSentenceType {
-	PACKAGE, RULE_ATTRIBUTE, FUNCTION_IMPORT_STATEMENT, IMPORT_STATEMENT, GLOBAL, FUNCTION, TEMPLATE, TYPE_DECLARATION, RULE, QUERY;
+	PACKAGE, FUNCTION_IMPORT_STATEMENT, IMPORT_STATEMENT, GLOBAL, FUNCTION, TEMPLATE, TYPE_DECLARATION, RULE, QUERY;
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/etirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g
===================================================================
--- labs/jbossrules/branches/etirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2008-11-24 23:31:46 UTC (rev 24077)
+++ labs/jbossrules/branches/etirelli/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2008-11-25 00:10:23 UTC (rev 24078)
@@ -708,8 +708,8 @@
 	;
 
 rule_attribute
- at init  { pushParaphrases(DroolsParaphraseTypes.RULE_ATTRIBUTE); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.RULE_ATTRIBUTE); }
- at after { paraphrases.pop(); if (!(retval.tree instanceof CommonErrorNode)) emit(Location.LOCATION_RULE_HEADER); }
+ at init  { boolean isFailed = true; pushParaphrases(DroolsParaphraseTypes.RULE_ATTRIBUTE); }
+ at after { paraphrases.pop(); isFailed = false; if (!(retval.tree instanceof CommonErrorNode)) emit(Location.LOCATION_RULE_HEADER); }
 	:	salience 
 	|	no_loop
 	|	agenda_group  
@@ -723,7 +723,14 @@
 	|	lock_on_active
 	|	dialect 
 	;
-
+finally {
+	if (isEditorInterfaceEnabled && isFailed) {
+		if (input.LA(2) == EOF && input.LA(1) == ID){
+			emit(input.LT(1), DroolsEditorType.IDENTIFIER);
+			input.consume();
+		}
+	}
+}
 date_effective
 	:	date_effective_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
 	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
@@ -956,9 +963,9 @@
 	:	INIT {	emit($INIT, DroolsEditorType.KEYWORD);	}
 	{	emit(Location.LOCATION_LHS_FROM_ACCUMULATE_INIT);	}
 		pc1=accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] cm1=COMMA? {	emit($cm1, DroolsEditorType.SYMBOL);	} 
-	{	if (pc2 != null && ((DroolsTree) $pc2.tree).getText() != null) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION);	}
+	{	if (pc1 != null && ((DroolsTree) pc1.getTree()).getText() != null) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION);	}
 		action_key pc2=accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] cm2=COMMA? {	emit($cm2, DroolsEditorType.SYMBOL);	} 
-	{	if (pc1 != null && ((DroolsTree) $pc1.tree).getText() != null && pc2 != null && ((DroolsTree) $pc2.tree).getText() != null ) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE);	}
+	{	if (pc1 != null && ((DroolsTree) pc1.getTree()).getText() != null && pc2 != null && ((DroolsTree) pc2.getTree()).getText() != null ) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE);	}
 	(	reverse_key pc3=accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] cm3=COMMA? {	emit($cm3, DroolsEditorType.SYMBOL);	} )?
 
 	{	if ((pc1 != null && ((DroolsTree) pc1.tree).getText() != null) &&

Modified: labs/jbossrules/branches/etirelli/drools-compiler/src/test/java/org/drools/lang/DRLContextTest.java
===================================================================
--- labs/jbossrules/branches/etirelli/drools-compiler/src/test/java/org/drools/lang/DRLContextTest.java	2008-11-24 23:31:46 UTC (rev 24077)
+++ labs/jbossrules/branches/etirelli/drools-compiler/src/test/java/org/drools/lang/DRLContextTest.java	2008-11-25 00:10:23 UTC (rev 24078)
@@ -7,10 +7,17 @@
 import org.antlr.runtime.ANTLRStringStream;
 import org.antlr.runtime.CommonTokenStream;
 import org.antlr.runtime.RecognitionException;
+import org.drools.base.evaluators.EvaluatorRegistry;
 import org.drools.compiler.DroolsParserException;
 
 public class DRLContextTest extends TestCase {
 
+	protected void setUp() throws Exception {
+		super.setUp();
+		// initializes pluggable operators
+		new EvaluatorRegistry();
+	}
+
 	public void testCheckLHSLocationDetermination_OPERATORS_AND_COMPLEMENT1()
 			throws DroolsParserException, RecognitionException {
 		String input = "rule MyRule when Class ( property memberOf collection ";
@@ -2288,6 +2295,24 @@
 						.getContent()));
 	}
 
+	public void testCheckLHSLocationDetermination_FROM_ACCUMULATE_ACTION_INSIDE3() {
+		String input = "rule MyRule \n" + "	when \n"
+				+ "		Class ( property > 0 ) from accumulate( \n"
+				+ "			$cheese : Cheese( type == $likes ), \n"
+				+ "			init( int total = 0; ), \n" + "			action( ";
+
+		DRLParser parser = getParser(input);
+		parser.enableEditorInterface();
+		try {
+			parser.compilation_unit();
+		} catch (Exception ex) {
+		}
+
+		assertEquals(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE,
+				getLastIntegerValue(parser.getEditorInterface().get(0)
+						.getContent()));
+	}
+
 	public void testCheckLHSLocationDetermination_FROM_ACCUMULATE_RESULT_INSIDE() {
 		String input = "rule MyRule \n" + "	when \n"
 				+ "		Class ( property > 0 ) from accumulate( \n"
@@ -2815,12 +2840,12 @@
 		}
 
 		DroolsToken token = getLastTokenOnList(parser.getEditorInterface().get(
-				2).getContent());
+				0).getContent());
 		assertEquals("group", token.getText().toLowerCase());
 		assertEquals(DroolsEditorType.KEYWORD, token.getEditorType());
 
 		assertEquals(Location.LOCATION_RULE_HEADER_KEYWORD,
-				getLastIntegerValue(parser.getEditorInterface().get(2)
+				getLastIntegerValue(parser.getEditorInterface().get(0)
 						.getContent()));
 	}
 
@@ -2894,7 +2919,6 @@
 		try {
 			parser.compilation_unit();
 		} catch (Exception ex) {
-			ex.printStackTrace();
 		}
 
 		DroolsToken token = getLastTokenOnList(parser.getEditorInterface().get(

Modified: labs/jbossrules/branches/etirelli/drools-compiler/src/test/java/org/drools/lang/ErrorsParserTest.java
===================================================================
--- labs/jbossrules/branches/etirelli/drools-compiler/src/test/java/org/drools/lang/ErrorsParserTest.java	2008-11-24 23:31:46 UTC (rev 24077)
+++ labs/jbossrules/branches/etirelli/drools-compiler/src/test/java/org/drools/lang/ErrorsParserTest.java	2008-11-25 00:10:23 UTC (rev 24078)
@@ -28,6 +28,7 @@
 import org.antlr.runtime.Lexer;
 import org.antlr.runtime.TokenStream;
 import org.antlr.runtime.tree.Tree;
+import org.drools.base.evaluators.EvaluatorRegistry;
 import org.drools.compiler.DroolsParserException;
 import org.drools.lang.dsl.DefaultExpander;
 
@@ -38,6 +39,9 @@
 	protected void setUp() throws Exception {
 		super.setUp();
 		this.parser = null;
+
+		// initializes pluggable operators
+		new EvaluatorRegistry();
 	}
 
 	protected void tearDown() throws Exception {

Modified: labs/jbossrules/branches/etirelli/drools-eclipse/drools-eclipse-test/src/test/java/org/drools/eclipse/editors/completion/CompletionContextTest.java
===================================================================
--- labs/jbossrules/branches/etirelli/drools-eclipse/drools-eclipse-test/src/test/java/org/drools/eclipse/editors/completion/CompletionContextTest.java	2008-11-24 23:31:46 UTC (rev 24077)
+++ labs/jbossrules/branches/etirelli/drools-eclipse/drools-eclipse-test/src/test/java/org/drools/eclipse/editors/completion/CompletionContextTest.java	2008-11-25 00:10:23 UTC (rev 24078)
@@ -4,6 +4,7 @@
 
 import junit.framework.TestCase;
 
+import org.drools.base.evaluators.EvaluatorRegistry;
 import org.drools.lang.Location;
 
 /**
@@ -15,6 +16,12 @@
  */
 public class CompletionContextTest extends TestCase {
 
+	protected void setUp() throws Exception {
+		super.setUp();
+		// initializes pluggable operators
+		new EvaluatorRegistry();
+	}
+
     public void testCheckLHSLocationDetermination_RULE_NAME_1() {
         String input =
         	"rule \"MyRule\" ";




More information about the jboss-svn-commits mailing list