[jboss-svn-commits] JBL Code SVN: r6063 - in labs/jbossrules/trunk/drools-compiler/src: main/java/org/drools/lang main/resources/org/drools/lang test/java/org/drools/lang test/resources/org/drools/lang

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Sep 1 07:48:26 EDT 2006


Author: michael.neale at jboss.com
Date: 2006-09-01 07:48:17 -0400 (Fri, 01 Sep 2006)
New Revision: 6063

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/test_CommentLineNumbersInConsequence.drl
Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/RuleParser.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/RuleParserLexer.java
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/drl.g
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java
Log:
JBRULES-472 added fix to get lines even with comments

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/RuleParser.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/RuleParser.java	2006-09-01 09:06:52 UTC (rev 6062)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/RuleParser.java	2006-09-01 11:48:17 UTC (rev 6063)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0ea8 /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g 2006-08-31 10:56:57
+// $ANTLR 3.0ea8 /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g 2006-09-01 12:37:56
 
 	package org.drools.lang;
 	import java.util.List;
@@ -299,18 +299,25 @@
             		this.errors.add( new GeneralParseException( "Trailing semi-colon not allowed", offset(line) ) );
             	}
             }
+            
+            private String padConsequenceLine(int diff, String cons) {
+            	for(int i = 0; i < diff; i++) {
+            		cons = cons + '\n';
+            	}
+            	return cons;
+            }
           
 
 
 
     // $ANTLR start opt_eol
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:282:1: opt_eol : ( (';'|EOL))* ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:289:1: opt_eol : ( (';'|EOL))* ;
     public void opt_eol() throws RecognitionException {   
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:283:17: ( ( (';'|EOL))* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:283:17: ( (';'|EOL))*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:290:17: ( ( (';'|EOL))* )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:290:17: ( (';'|EOL))*
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:283:17: ( (';'|EOL))*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:290:17: ( (';'|EOL))*
             loop1:
             do {
                 int alt1=2;
@@ -325,7 +332,7 @@
 
                 switch (alt1) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:283:18: (';'|EOL)
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:290:18: (';'|EOL)
             	    {
             	    if ( input.LA(1)==EOL||input.LA(1)==15 ) {
             	        input.consume();
@@ -362,7 +369,7 @@
 
 
     // $ANTLR start compilation_unit
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:286:1: compilation_unit : opt_eol prolog (r= rule | q= query | t= template | extra_statement )* ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:293:1: compilation_unit : opt_eol prolog (r= rule | q= query | t= template | extra_statement )* ;
     public void compilation_unit() throws RecognitionException {   
         RuleDescr r = null;
 
@@ -372,8 +379,8 @@
 
 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:287:17: ( opt_eol prolog (r= rule | q= query | t= template | extra_statement )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:287:17: opt_eol prolog (r= rule | q= query | t= template | extra_statement )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:294:17: ( opt_eol prolog (r= rule | q= query | t= template | extra_statement )* )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:294:17: opt_eol prolog (r= rule | q= query | t= template | extra_statement )*
             {
             following.push(FOLLOW_opt_eol_in_compilation_unit57);
             opt_eol();
@@ -383,14 +390,14 @@
             prolog();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:289:17: (r= rule | q= query | t= template | extra_statement )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:296:17: (r= rule | q= query | t= template | extra_statement )*
             loop2:
             do {
                 int alt2=5;
                 alt2 = dfa2.predict(input); 
                 switch (alt2) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:289:25: r= rule
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:296:25: r= rule
             	    {
             	    following.push(FOLLOW_rule_in_compilation_unit70);
             	    r=rule();
@@ -401,7 +408,7 @@
             	    }
             	    break;
             	case 2 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:290:25: q= query
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:297:25: q= query
             	    {
             	    following.push(FOLLOW_query_in_compilation_unit83);
             	    q=query();
@@ -412,7 +419,7 @@
             	    }
             	    break;
             	case 3 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:291:25: t= template
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:298:25: t= template
             	    {
             	    following.push(FOLLOW_template_in_compilation_unit93);
             	    t=template();
@@ -423,7 +430,7 @@
             	    }
             	    break;
             	case 4 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:292:25: extra_statement
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:299:25: extra_statement
             	    {
             	    following.push(FOLLOW_extra_statement_in_compilation_unit101);
             	    extra_statement();
@@ -454,7 +461,7 @@
 
 
     // $ANTLR start prolog
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:296:1: prolog : opt_eol (name= package_statement )? ( extra_statement | expander )* opt_eol ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:303:1: prolog : opt_eol (name= package_statement )? ( extra_statement | expander )* opt_eol ;
     public void prolog() throws RecognitionException {   
         String name = null;
 
@@ -463,14 +470,14 @@
         		String packageName = "";
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:300:17: ( opt_eol (name= package_statement )? ( extra_statement | expander )* opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:300:17: opt_eol (name= package_statement )? ( extra_statement | expander )* opt_eol
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:307:17: ( opt_eol (name= package_statement )? ( extra_statement | expander )* opt_eol )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:307:17: opt_eol (name= package_statement )? ( extra_statement | expander )* opt_eol
             {
             following.push(FOLLOW_opt_eol_in_prolog125);
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:301:17: (name= package_statement )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:308:17: (name= package_statement )?
             int alt3=2;
             int LA3_0 = input.LA(1);
             if ( LA3_0==16 ) {
@@ -481,13 +488,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("301:17: (name= package_statement )?", 3, 0, input);
+                    new NoViableAltException("308:17: (name= package_statement )?", 3, 0, input);
 
                 throw nvae;
             }
             switch (alt3) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:301:19: name= package_statement
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:308:19: name= package_statement
                     {
                     following.push(FOLLOW_package_statement_in_prolog133);
                     name=package_statement();
@@ -503,14 +510,14 @@
              
             			this.packageDescr = new PackageDescr( name ); 
             		
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:305:17: ( extra_statement | expander )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:312:17: ( extra_statement | expander )*
             loop4:
             do {
                 int alt4=3;
                 alt4 = dfa4.predict(input); 
                 switch (alt4) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:305:25: extra_statement
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:312:25: extra_statement
             	    {
             	    following.push(FOLLOW_extra_statement_in_prolog148);
             	    extra_statement();
@@ -520,7 +527,7 @@
             	    }
             	    break;
             	case 2 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:306:25: expander
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:313:25: expander
             	    {
             	    following.push(FOLLOW_expander_in_prolog154);
             	    expander();
@@ -555,7 +562,7 @@
 
 
     // $ANTLR start package_statement
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:312:1: package_statement returns [String packageName] : 'package' opt_eol name= dotted_name ( ';' )? opt_eol ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:319:1: package_statement returns [String packageName] : 'package' opt_eol name= dotted_name ( ';' )? opt_eol ;
     public String package_statement() throws RecognitionException {   
         String packageName;
         String name = null;
@@ -565,8 +572,8 @@
         		packageName = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:317:17: ( 'package' opt_eol name= dotted_name ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:317:17: 'package' opt_eol name= dotted_name ( ';' )? opt_eol
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:324:17: ( 'package' opt_eol name= dotted_name ( ';' )? opt_eol )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:324:17: 'package' opt_eol name= dotted_name ( ';' )? opt_eol
             {
             match(input,16,FOLLOW_16_in_package_statement190); 
             following.push(FOLLOW_opt_eol_in_package_statement192);
@@ -577,7 +584,7 @@
             name=dotted_name();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:317:52: ( ';' )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:324:52: ( ';' )?
             int alt5=2;
             int LA5_0 = input.LA(1);
             if ( LA5_0==15 ) {
@@ -588,13 +595,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("317:52: ( \';\' )?", 5, 0, input);
+                    new NoViableAltException("324:52: ( \';\' )?", 5, 0, input);
 
                 throw nvae;
             }
             switch (alt5) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:317:52: ';'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:324:52: ';'
                     {
                     match(input,15,FOLLOW_15_in_package_statement198); 
 
@@ -626,14 +633,14 @@
 
 
     // $ANTLR start import_statement
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:323:1: import_statement : 'import' opt_eol name= import_name ( ';' )? opt_eol ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:330:1: import_statement : 'import' opt_eol name= import_name ( ';' )? opt_eol ;
     public void import_statement() throws RecognitionException {   
         String name = null;
 
 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:324:17: ( 'import' opt_eol name= import_name ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:324:17: 'import' opt_eol name= import_name ( ';' )? opt_eol
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:331:17: ( 'import' opt_eol name= import_name ( ';' )? opt_eol )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:331:17: 'import' opt_eol name= import_name ( ';' )? opt_eol
             {
             match(input,17,FOLLOW_17_in_import_statement217); 
             following.push(FOLLOW_opt_eol_in_import_statement219);
@@ -644,7 +651,7 @@
             name=import_name();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:324:51: ( ';' )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:331:51: ( ';' )?
             int alt6=2;
             int LA6_0 = input.LA(1);
             if ( LA6_0==15 ) {
@@ -655,13 +662,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("324:51: ( \';\' )?", 6, 0, input);
+                    new NoViableAltException("331:51: ( \';\' )?", 6, 0, input);
 
                 throw nvae;
             }
             switch (alt6) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:324:51: ';'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:331:51: ';'
                     {
                     match(input,15,FOLLOW_15_in_import_statement225); 
 
@@ -694,14 +701,14 @@
 
 
     // $ANTLR start function_import_statement
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:331:1: function_import_statement : 'import' 'function' opt_eol name= import_name ( ';' )? opt_eol ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:338:1: function_import_statement : 'import' 'function' opt_eol name= import_name ( ';' )? opt_eol ;
     public void function_import_statement() throws RecognitionException {   
         String name = null;
 
 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:332:17: ( 'import' 'function' opt_eol name= import_name ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:332:17: 'import' 'function' opt_eol name= import_name ( ';' )? opt_eol
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:339:17: ( 'import' 'function' opt_eol name= import_name ( ';' )? opt_eol )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:339:17: 'import' 'function' opt_eol name= import_name ( ';' )? opt_eol
             {
             match(input,17,FOLLOW_17_in_function_import_statement244); 
             match(input,18,FOLLOW_18_in_function_import_statement246); 
@@ -713,7 +720,7 @@
             name=import_name();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:332:62: ( ';' )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:339:62: ( ';' )?
             int alt7=2;
             int LA7_0 = input.LA(1);
             if ( LA7_0==15 ) {
@@ -724,13 +731,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("332:62: ( \';\' )?", 7, 0, input);
+                    new NoViableAltException("339:62: ( \';\' )?", 7, 0, input);
 
                 throw nvae;
             }
             switch (alt7) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:332:62: ';'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:339:62: ';'
                     {
                     match(input,15,FOLLOW_15_in_function_import_statement254); 
 
@@ -763,7 +770,7 @@
 
 
     // $ANTLR start import_name
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:340:1: import_name returns [String name] : id= ID ( '.' id= ID )* (star= '.*' )? ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:347:1: import_name returns [String name] : id= ID ( '.' id= ID )* (star= '.*' )? ;
     public String import_name() throws RecognitionException {   
         String name;
         Token id=null;
@@ -773,13 +780,13 @@
         		name = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:345:17: (id= ID ( '.' id= ID )* (star= '.*' )? )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:345:17: id= ID ( '.' id= ID )* (star= '.*' )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:352:17: (id= ID ( '.' id= ID )* (star= '.*' )? )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:352:17: id= ID ( '.' id= ID )* (star= '.*' )?
             {
             id=(Token)input.LT(1);
             match(input,ID,FOLLOW_ID_in_import_name289); 
              name=id.getText(); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:345:46: ( '.' id= ID )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:352:46: ( '.' id= ID )*
             loop8:
             do {
                 int alt8=2;
@@ -791,7 +798,7 @@
 
                 switch (alt8) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:345:48: '.' id= ID
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:352:48: '.' id= ID
             	    {
             	    match(input,19,FOLLOW_19_in_import_name295); 
             	    id=(Token)input.LT(1);
@@ -806,7 +813,7 @@
                 }
             } while (true);
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:345:99: (star= '.*' )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:352:99: (star= '.*' )?
             int alt9=2;
             int LA9_0 = input.LA(1);
             if ( LA9_0==20 ) {
@@ -817,13 +824,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("345:99: (star= \'.*\' )?", 9, 0, input);
+                    new NoViableAltException("352:99: (star= \'.*\' )?", 9, 0, input);
 
                 throw nvae;
             }
             switch (alt9) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:345:100: star= '.*'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:352:100: star= '.*'
                     {
                     star=(Token)input.LT(1);
                     match(input,20,FOLLOW_20_in_import_name309); 
@@ -850,7 +857,7 @@
 
 
     // $ANTLR start expander
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:347:1: expander : 'expander' (name= dotted_name )? ( ';' )? opt_eol ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:354:1: expander : 'expander' (name= dotted_name )? ( ';' )? opt_eol ;
     public void expander() throws RecognitionException {   
         String name = null;
 
@@ -859,11 +866,11 @@
         		String config=null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:351:17: ( 'expander' (name= dotted_name )? ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:351:17: 'expander' (name= dotted_name )? ( ';' )? opt_eol
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:358:17: ( 'expander' (name= dotted_name )? ( ';' )? opt_eol )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:358:17: 'expander' (name= dotted_name )? ( ';' )? opt_eol
             {
             match(input,21,FOLLOW_21_in_expander329); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:351:28: (name= dotted_name )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:358:28: (name= dotted_name )?
             int alt10=2;
             int LA10_0 = input.LA(1);
             if ( LA10_0==ID ) {
@@ -874,13 +881,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("351:28: (name= dotted_name )?", 10, 0, input);
+                    new NoViableAltException("358:28: (name= dotted_name )?", 10, 0, input);
 
                 throw nvae;
             }
             switch (alt10) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:351:29: name= dotted_name
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:358:29: name= dotted_name
                     {
                     following.push(FOLLOW_dotted_name_in_expander334);
                     name=dotted_name();
@@ -892,7 +899,7 @@
 
             }
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:351:48: ( ';' )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:358:48: ( ';' )?
             int alt11=2;
             int LA11_0 = input.LA(1);
             if ( LA11_0==15 ) {
@@ -903,13 +910,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("351:48: ( \';\' )?", 11, 0, input);
+                    new NoViableAltException("358:48: ( \';\' )?", 11, 0, input);
 
                 throw nvae;
             }
             switch (alt11) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:351:48: ';'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:358:48: ';'
                     {
                     match(input,15,FOLLOW_15_in_expander338); 
 
@@ -945,7 +952,7 @@
 
 
     // $ANTLR start global
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:361:1: global : 'global' type= dotted_name id= ID ( ';' )? opt_eol ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:368:1: global : 'global' type= dotted_name id= ID ( ';' )? opt_eol ;
     public void global() throws RecognitionException {   
         Token id=null;
         String type = null;
@@ -954,8 +961,8 @@
 
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:365:17: ( 'global' type= dotted_name id= ID ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:365:17: 'global' type= dotted_name id= ID ( ';' )? opt_eol
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:372:17: ( 'global' type= dotted_name id= ID ( ';' )? opt_eol )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:372:17: 'global' type= dotted_name id= ID ( ';' )? opt_eol
             {
             match(input,22,FOLLOW_22_in_global365); 
             following.push(FOLLOW_dotted_name_in_global369);
@@ -964,7 +971,7 @@
 
             id=(Token)input.LT(1);
             match(input,ID,FOLLOW_ID_in_global373); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:365:49: ( ';' )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:372:49: ( ';' )?
             int alt12=2;
             int LA12_0 = input.LA(1);
             if ( LA12_0==15 ) {
@@ -975,13 +982,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("365:49: ( \';\' )?", 12, 0, input);
+                    new NoViableAltException("372:49: ( \';\' )?", 12, 0, input);
 
                 throw nvae;
             }
             switch (alt12) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:365:49: ';'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:372:49: ';'
                     {
                     match(input,15,FOLLOW_15_in_global375); 
 
@@ -1013,7 +1020,7 @@
 
 
     // $ANTLR start function
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:371:1: function : 'function' opt_eol (retType= dotted_name )? opt_eol name= ID opt_eol '(' opt_eol ( (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )* )? ')' opt_eol '{' body= curly_chunk '}' opt_eol ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:378:1: function : 'function' opt_eol (retType= dotted_name )? opt_eol name= ID opt_eol '(' opt_eol ( (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )* )? ')' opt_eol '{' body= curly_chunk '}' opt_eol ;
     public void function() throws RecognitionException {   
         Token name=null;
         String retType = null;
@@ -1029,20 +1036,20 @@
         		FunctionDescr f = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:376:17: ( 'function' opt_eol (retType= dotted_name )? opt_eol name= ID opt_eol '(' opt_eol ( (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )* )? ')' opt_eol '{' body= curly_chunk '}' opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:376:17: 'function' opt_eol (retType= dotted_name )? opt_eol name= ID opt_eol '(' opt_eol ( (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )* )? ')' opt_eol '{' body= curly_chunk '}' opt_eol
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:383:17: ( 'function' opt_eol (retType= dotted_name )? opt_eol name= ID opt_eol '(' opt_eol ( (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )* )? ')' opt_eol '{' body= curly_chunk '}' opt_eol )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:383:17: 'function' opt_eol (retType= dotted_name )? opt_eol name= ID opt_eol '(' opt_eol ( (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )* )? ')' opt_eol '{' body= curly_chunk '}' opt_eol
             {
             match(input,18,FOLLOW_18_in_function402); 
             following.push(FOLLOW_opt_eol_in_function404);
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:376:36: (retType= dotted_name )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:383:36: (retType= dotted_name )?
             int alt13=2;
             alt13 = dfa13.predict(input); 
             switch (alt13) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:376:37: retType= dotted_name
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:383:37: retType= dotted_name
                     {
                     following.push(FOLLOW_dotted_name_in_function409);
                     retType=dotted_name();
@@ -1073,7 +1080,7 @@
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:382:25: ( (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )* )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:389:25: ( (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )* )?
             int alt17=2;
             int LA17_0 = input.LA(1);
             if ( (LA17_0>=EOL && LA17_0<=ID)||LA17_0==15 ) {
@@ -1084,20 +1091,20 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("382:25: ( (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( \',\' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )* )?", 17, 0, input);
+                    new NoViableAltException("389:25: ( (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( \',\' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )* )?", 17, 0, input);
 
                 throw nvae;
             }
             switch (alt17) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:382:33: (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )*
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:389:33: (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )*
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:382:33: (paramType= dotted_name )?
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:389:33: (paramType= dotted_name )?
                     int alt14=2;
                     alt14 = dfa14.predict(input); 
                     switch (alt14) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:382:34: paramType= dotted_name
+                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:389:34: paramType= dotted_name
                             {
                             following.push(FOLLOW_dotted_name_in_function440);
                             paramType=dotted_name();
@@ -1124,7 +1131,7 @@
 
                     					f.addParameter( paramType, paramName );
                     				
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:386:33: ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )*
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:393:33: ( ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol )*
                     loop16:
                     do {
                         int alt16=2;
@@ -1136,19 +1143,19 @@
 
                         switch (alt16) {
                     	case 1 :
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:386:41: ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol
+                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:393:41: ',' opt_eol (paramType= dotted_name )? opt_eol paramName= argument_name opt_eol
                     	    {
                     	    match(input,24,FOLLOW_24_in_function464); 
                     	    following.push(FOLLOW_opt_eol_in_function466);
                     	    opt_eol();
                     	    following.pop();
 
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:386:53: (paramType= dotted_name )?
+                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:393:53: (paramType= dotted_name )?
                     	    int alt15=2;
                     	    alt15 = dfa15.predict(input); 
                     	    switch (alt15) {
                     	        case 1 :
-                    	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:386:54: paramType= dotted_name
+                    	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:393:54: paramType= dotted_name
                     	            {
                     	            following.push(FOLLOW_dotted_name_in_function471);
                     	            paramType=dotted_name();
@@ -1227,7 +1234,7 @@
 
 
     // $ANTLR start query
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:407:1: query returns [QueryDescr query] : opt_eol loc= 'query' queryName= word opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) 'end' opt_eol ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:414:1: query returns [QueryDescr query] : opt_eol loc= 'query' queryName= word opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) 'end' opt_eol ;
     public QueryDescr query() throws RecognitionException {   
         QueryDescr query;
         Token loc=null;
@@ -1238,8 +1245,8 @@
         		query = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:412:17: ( opt_eol loc= 'query' queryName= word opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) 'end' opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:412:17: opt_eol loc= 'query' queryName= word opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) 'end' opt_eol
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:419:17: ( opt_eol loc= 'query' queryName= word opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) 'end' opt_eol )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:419:17: opt_eol loc= 'query' queryName= word opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) 'end' opt_eol
             {
             following.push(FOLLOW_opt_eol_in_query562);
             opt_eol();
@@ -1261,7 +1268,7 @@
             			AndDescr lhs = new AndDescr(); query.setLhs( lhs ); 
             			lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
             		
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:420:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:427:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )
             int alt18=2;
             switch ( input.LA(1) ) {
             case 23:
@@ -1274,7 +1281,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("420:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 18, 1, input);
+                        new NoViableAltException("427:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 18, 1, input);
 
                     throw nvae;
                 }
@@ -1289,7 +1296,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("420:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 18, 2, input);
+                        new NoViableAltException("427:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 18, 2, input);
 
                     throw nvae;
                 }
@@ -1304,7 +1311,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("420:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 18, 3, input);
+                        new NoViableAltException("427:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 18, 3, input);
 
                     throw nvae;
                 }
@@ -1319,7 +1326,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("420:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 18, 4, input);
+                        new NoViableAltException("427:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 18, 4, input);
 
                     throw nvae;
                 }
@@ -1334,7 +1341,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("420:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 18, 5, input);
+                        new NoViableAltException("427:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 18, 5, input);
 
                     throw nvae;
                 }
@@ -1349,7 +1356,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("420:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 18, 6, input);
+                        new NoViableAltException("427:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 18, 6, input);
 
                     throw nvae;
                 }
@@ -1364,7 +1371,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("420:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 18, 7, input);
+                        new NoViableAltException("427:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 18, 7, input);
 
                     throw nvae;
                 }
@@ -1379,7 +1386,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("420:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 18, 8, input);
+                        new NoViableAltException("427:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 18, 8, input);
 
                     throw nvae;
                 }
@@ -1444,14 +1451,14 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("420:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 18, 0, input);
+                    new NoViableAltException("427:17: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 18, 0, input);
 
                 throw nvae;
             }
 
             switch (alt18) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:421:25: {...}? expander_lhs_block[lhs]
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:428:25: {...}? expander_lhs_block[lhs]
                     {
                     if ( !( expander != null ) ) {
                         throw new FailedPredicateException(input, "query", " expander != null ");
@@ -1464,7 +1471,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:422:27: normal_lhs_block[lhs]
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:429:27: normal_lhs_block[lhs]
                     {
                     following.push(FOLLOW_normal_lhs_block_in_query598);
                     normal_lhs_block(lhs);
@@ -1497,7 +1504,7 @@
 
 
     // $ANTLR start template
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:428:1: template returns [FactTemplateDescr template] : opt_eol loc= 'template' templateName= ID EOL (slot= template_slot )+ 'end' EOL ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:435:1: template returns [FactTemplateDescr template] : opt_eol loc= 'template' templateName= ID EOL (slot= template_slot )+ 'end' EOL ;
     public FactTemplateDescr template() throws RecognitionException {   
         FactTemplateDescr template;
         Token loc=null;
@@ -1509,8 +1516,8 @@
         		template = null;		
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:433:17: ( opt_eol loc= 'template' templateName= ID EOL (slot= template_slot )+ 'end' EOL )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:433:17: opt_eol loc= 'template' templateName= ID EOL (slot= template_slot )+ 'end' EOL
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:440:17: ( opt_eol loc= 'template' templateName= ID EOL (slot= template_slot )+ 'end' EOL )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:440:17: opt_eol loc= 'template' templateName= ID EOL (slot= template_slot )+ 'end' EOL
             {
             following.push(FOLLOW_opt_eol_in_template639);
             opt_eol();
@@ -1525,7 +1532,7 @@
             			template = new FactTemplateDescr(templateName.getText());
             			template.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );			
             		
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:439:17: (slot= template_slot )+
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:446:17: (slot= template_slot )+
             int cnt19=0;
             loop19:
             do {
@@ -1538,7 +1545,7 @@
 
                 switch (alt19) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:440:25: slot= template_slot
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:447:25: slot= template_slot
             	    {
             	    following.push(FOLLOW_template_slot_in_template666);
             	    slot=template_slot();
@@ -1578,7 +1585,7 @@
 
 
     // $ANTLR start template_slot
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:448:1: template_slot returns [FieldTemplateDescr field] : fieldType= dotted_name name= ID (EOL|';');
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:455:1: template_slot returns [FieldTemplateDescr field] : fieldType= dotted_name name= ID (EOL|';');
     public FieldTemplateDescr template_slot() throws RecognitionException {   
         FieldTemplateDescr field;
         Token name=null;
@@ -1589,8 +1596,8 @@
         		field = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:454:18: (fieldType= dotted_name name= ID (EOL|';'))
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:454:18: fieldType= dotted_name name= ID (EOL|';')
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:461:18: (fieldType= dotted_name name= ID (EOL|';'))
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:461:18: fieldType= dotted_name name= ID (EOL|';')
             {
             following.push(FOLLOW_dotted_name_in_template_slot715);
             fieldType=dotted_name();
@@ -1630,7 +1637,7 @@
 
 
     // $ANTLR start rule
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:463:1: rule returns [RuleDescr rule] : opt_eol loc= 'rule' ruleName= word opt_eol ( rule_attributes[rule] )? opt_eol ( (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )* )? )? 'end' opt_eol ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:470:1: rule returns [RuleDescr rule] : opt_eol loc= 'rule' ruleName= word opt_eol ( rule_attributes[rule] )? opt_eol ( (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . ( EOL )* )* )? )? 'end' opt_eol ;
     public RuleDescr rule() throws RecognitionException {   
         RuleDescr rule;
         Token loc=null;
@@ -1643,8 +1650,8 @@
         		String consequence = "";
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:469:17: ( opt_eol loc= 'rule' ruleName= word opt_eol ( rule_attributes[rule] )? opt_eol ( (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )* )? )? 'end' opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:469:17: opt_eol loc= 'rule' ruleName= word opt_eol ( rule_attributes[rule] )? opt_eol ( (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )* )? )? 'end' opt_eol
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:476:17: ( opt_eol loc= 'rule' ruleName= word opt_eol ( rule_attributes[rule] )? opt_eol ( (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . ( EOL )* )* )? )? 'end' opt_eol )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:476:17: opt_eol loc= 'rule' ruleName= word opt_eol ( rule_attributes[rule] )? opt_eol ( (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . ( EOL )* )* )? )? 'end' opt_eol
             {
             following.push(FOLLOW_opt_eol_in_rule758);
             opt_eol();
@@ -1665,7 +1672,7 @@
             			rule = new RuleDescr( ruleName, null ); 
             			rule.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
             		
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:476:17: ( rule_attributes[rule] )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:483:17: ( rule_attributes[rule] )?
             int alt20=2;
             switch ( input.LA(1) ) {
             case 33:
@@ -1694,14 +1701,14 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("476:17: ( rule_attributes[rule] )?", 20, 0, input);
+                    new NoViableAltException("483:17: ( rule_attributes[rule] )?", 20, 0, input);
 
                 throw nvae;
             }
 
             switch (alt20) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:476:25: rule_attributes[rule]
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:483:25: rule_attributes[rule]
                     {
                     following.push(FOLLOW_rule_attributes_in_rule781);
                     rule_attributes(rule);
@@ -1717,26 +1724,26 @@
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:479:17: ( (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )* )? )?
-            int alt27=2;
-            int LA27_0 = input.LA(1);
-            if ( LA27_0==EOL||LA27_0==15||LA27_0==32||LA27_0==34 ) {
-                alt27=1;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:486:17: ( (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . ( EOL )* )* )? )?
+            int alt28=2;
+            int LA28_0 = input.LA(1);
+            if ( LA28_0==EOL||LA28_0==15||LA28_0==32||LA28_0==34 ) {
+                alt28=1;
             }
-            else if ( LA27_0==29 ) {
-                alt27=1;
+            else if ( LA28_0==29 ) {
+                alt28=1;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("479:17: ( (loc= \'when\' ( \':\' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= \'then\' ( \':\' )? opt_eol ( options {greedy=false; } : any= . )* )? )?", 27, 0, input);
+                    new NoViableAltException("486:17: ( (loc= \'when\' ( \':\' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= \'then\' ( \':\' )? opt_eol ( options {greedy=false; } : any= . ( EOL )* )* )? )?", 28, 0, input);
 
                 throw nvae;
             }
-            switch (alt27) {
+            switch (alt28) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:479:18: (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )* )?
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:486:18: (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )? ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . ( EOL )* )* )?
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:479:18: (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )?
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:486:18: (loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )?
                     int alt23=2;
                     int LA23_0 = input.LA(1);
                     if ( LA23_0==32 ) {
@@ -1747,17 +1754,17 @@
                     }
                     else {
                         NoViableAltException nvae =
-                            new NoViableAltException("479:18: (loc= \'when\' ( \':\' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )?", 23, 0, input);
+                            new NoViableAltException("486:18: (loc= \'when\' ( \':\' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] ) )?", 23, 0, input);
 
                         throw nvae;
                     }
                     switch (alt23) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:479:25: loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )
+                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:486:25: loc= 'when' ( ':' )? opt_eol ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )
                             {
                             loc=(Token)input.LT(1);
                             match(input,32,FOLLOW_32_in_rule800); 
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:479:36: ( ':' )?
+                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:486:36: ( ':' )?
                             int alt21=2;
                             int LA21_0 = input.LA(1);
                             if ( LA21_0==33 ) {
@@ -1770,7 +1777,7 @@
                                 }
                                 else {
                                     NoViableAltException nvae =
-                                        new NoViableAltException("479:36: ( \':\' )?", 21, 1, input);
+                                        new NoViableAltException("486:36: ( \':\' )?", 21, 1, input);
 
                                     throw nvae;
                                 }
@@ -1780,13 +1787,13 @@
                             }
                             else {
                                 NoViableAltException nvae =
-                                    new NoViableAltException("479:36: ( \':\' )?", 21, 0, input);
+                                    new NoViableAltException("486:36: ( \':\' )?", 21, 0, input);
 
                                 throw nvae;
                             }
                             switch (alt21) {
                                 case 1 :
-                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:479:36: ':'
+                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:486:36: ':'
                                     {
                                     match(input,33,FOLLOW_33_in_rule802); 
 
@@ -1803,7 +1810,7 @@
                             				AndDescr lhs = new AndDescr(); rule.setLhs( lhs ); 
                             				lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
                             			
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:484:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )
+                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:491:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )
                             int alt22=2;
                             switch ( input.LA(1) ) {
                             case 23:
@@ -1816,7 +1823,7 @@
                                 }
                                 else {
                                     NoViableAltException nvae =
-                                        new NoViableAltException("484:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 22, 1, input);
+                                        new NoViableAltException("491:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 22, 1, input);
 
                                     throw nvae;
                                 }
@@ -1831,7 +1838,7 @@
                                 }
                                 else {
                                     NoViableAltException nvae =
-                                        new NoViableAltException("484:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 22, 2, input);
+                                        new NoViableAltException("491:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 22, 2, input);
 
                                     throw nvae;
                                 }
@@ -1846,7 +1853,7 @@
                                 }
                                 else {
                                     NoViableAltException nvae =
-                                        new NoViableAltException("484:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 22, 3, input);
+                                        new NoViableAltException("491:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 22, 3, input);
 
                                     throw nvae;
                                 }
@@ -1861,7 +1868,7 @@
                                 }
                                 else {
                                     NoViableAltException nvae =
-                                        new NoViableAltException("484:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 22, 4, input);
+                                        new NoViableAltException("491:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 22, 4, input);
 
                                     throw nvae;
                                 }
@@ -1876,7 +1883,7 @@
                                 }
                                 else {
                                     NoViableAltException nvae =
-                                        new NoViableAltException("484:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 22, 5, input);
+                                        new NoViableAltException("491:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 22, 5, input);
 
                                     throw nvae;
                                 }
@@ -1891,7 +1898,7 @@
                                 }
                                 else {
                                     NoViableAltException nvae =
-                                        new NoViableAltException("484:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 22, 6, input);
+                                        new NoViableAltException("491:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 22, 6, input);
 
                                     throw nvae;
                                 }
@@ -1906,7 +1913,7 @@
                                 }
                                 else {
                                     NoViableAltException nvae =
-                                        new NoViableAltException("484:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 22, 7, input);
+                                        new NoViableAltException("491:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 22, 7, input);
 
                                     throw nvae;
                                 }
@@ -1921,7 +1928,7 @@
                                 }
                                 else {
                                     NoViableAltException nvae =
-                                        new NoViableAltException("484:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 22, 8, input);
+                                        new NoViableAltException("491:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 22, 8, input);
 
                                     throw nvae;
                                 }
@@ -1936,7 +1943,7 @@
                                 }
                                 else {
                                     NoViableAltException nvae =
-                                        new NoViableAltException("484:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 22, 9, input);
+                                        new NoViableAltException("491:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 22, 9, input);
 
                                     throw nvae;
                                 }
@@ -2000,14 +2007,14 @@
                                 break;
                             default:
                                 NoViableAltException nvae =
-                                    new NoViableAltException("484:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 22, 0, input);
+                                    new NoViableAltException("491:25: ({...}? expander_lhs_block[lhs] | normal_lhs_block[lhs] )", 22, 0, input);
 
                                 throw nvae;
                             }
 
                             switch (alt22) {
                                 case 1 :
-                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:485:33: {...}? expander_lhs_block[lhs]
+                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:492:33: {...}? expander_lhs_block[lhs]
                                     {
                                     if ( !( expander != null ) ) {
                                         throw new FailedPredicateException(input, "rule", " expander != null ");
@@ -2020,7 +2027,7 @@
                                     }
                                     break;
                                 case 2 :
-                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:486:35: normal_lhs_block[lhs]
+                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:493:35: normal_lhs_block[lhs]
                                     {
                                     following.push(FOLLOW_normal_lhs_block_in_rule832);
                                     normal_lhs_block(lhs);
@@ -2038,24 +2045,24 @@
 
                     }
 
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:490:17: ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )* )?
-                    int alt26=2;
-                    int LA26_0 = input.LA(1);
-                    if ( LA26_0==EOL||LA26_0==15||LA26_0==34 ) {
-                        alt26=1;
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:497:17: ( opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . ( EOL )* )* )?
+                    int alt27=2;
+                    int LA27_0 = input.LA(1);
+                    if ( LA27_0==EOL||LA27_0==15||LA27_0==34 ) {
+                        alt27=1;
                     }
-                    else if ( LA26_0==29 ) {
-                        alt26=2;
+                    else if ( LA27_0==29 ) {
+                        alt27=2;
                     }
                     else {
                         NoViableAltException nvae =
-                            new NoViableAltException("490:17: ( opt_eol loc= \'then\' ( \':\' )? opt_eol ( options {greedy=false; } : any= . )* )?", 26, 0, input);
+                            new NoViableAltException("497:17: ( opt_eol loc= \'then\' ( \':\' )? opt_eol ( options {greedy=false; } : any= . ( EOL )* )* )?", 27, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt26) {
+                    switch (alt27) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:490:19: opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . )*
+                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:497:19: opt_eol loc= 'then' ( ':' )? opt_eol ( options {greedy=false; } : any= . ( EOL )* )*
                             {
                             following.push(FOLLOW_opt_eol_in_rule855);
                             opt_eol();
@@ -2063,7 +2070,7 @@
 
                             loc=(Token)input.LT(1);
                             match(input,34,FOLLOW_34_in_rule859); 
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:490:38: ( ':' )?
+                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:497:38: ( ':' )?
                             int alt24=2;
                             int LA24_0 = input.LA(1);
                             if ( LA24_0==33 ) {
@@ -2074,13 +2081,13 @@
                             }
                             else {
                                 NoViableAltException nvae =
-                                    new NoViableAltException("490:38: ( \':\' )?", 24, 0, input);
+                                    new NoViableAltException("497:38: ( \':\' )?", 24, 0, input);
 
                                 throw nvae;
                             }
                             switch (alt24) {
                                 case 1 :
-                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:490:38: ':'
+                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:497:38: ':'
                                     {
                                     match(input,33,FOLLOW_33_in_rule861); 
 
@@ -2093,34 +2100,68 @@
                             opt_eol();
                             following.pop();
 
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:491:25: ( options {greedy=false; } : any= . )*
-                            loop25:
+                            int prevLine = loc.getLine()+1; 
+                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:499:25: ( options {greedy=false; } : any= . ( EOL )* )*
+                            loop26:
                             do {
-                                int alt25=2;
-                                int LA25_0 = input.LA(1);
-                                if ( LA25_0==29 ) {
-                                    alt25=2;
+                                int alt26=2;
+                                int LA26_0 = input.LA(1);
+                                if ( LA26_0==29 ) {
+                                    alt26=2;
                                 }
-                                else if ( (LA25_0>=EOL && LA25_0<=28)||(LA25_0>=30 && LA25_0<=67) ) {
-                                    alt25=1;
+                                else if ( (LA26_0>=EOL && LA26_0<=28)||(LA26_0>=30 && LA26_0<=67) ) {
+                                    alt26=1;
                                 }
 
 
-                                switch (alt25) {
+                                switch (alt26) {
                             	case 1 :
-                            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:491:52: any= .
+                            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:499:52: any= . ( EOL )*
                             	    {
                             	    any=(Token)input.LT(1);
                             	    matchAny(input); 
+                            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:499:58: ( EOL )*
+                            	    loop25:
+                            	    do {
+                            	        int alt25=2;
+                            	        int LA25_0 = input.LA(1);
+                            	        if ( LA25_0==EOL ) {
+                            	            alt25=1;
+                            	        }
 
+
+                            	        switch (alt25) {
+                            	    	case 1 :
+                            	    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:499:59: EOL
+                            	    	    {
+                            	    	    match(input,EOL,FOLLOW_EOL_in_rule892); 
+
+                            	    	    }
+                            	    	    break;
+
+                            	    	default :
+                            	    	    break loop25;
+                            	        }
+                            	    } while (true);
+
+
+                            	    					/*
+                            	    					if (prevLine = 0) { prevLine = any.getLine() ;}
+                            	    					
+                            	    					int lineDif = any.getLine() - prevLine - 1;
+                            	    					consequence = padConsequenceLines(lineDif, consequence);
+                            	    					*/
+                            	    					int diff = any.getLine() - prevLine;
+                            	    					consequence = padConsequenceLine(diff, consequence);
                             	    					consequence = consequence + " " + any.getText();
+                            	    					prevLine = any.getLine();
                             	    				
 
                             	    }
                             	    break;
 
                             	default :
-                            	    break loop25;
+                            	    break loop26;
                                 }
                             } while (true);
 
@@ -2145,8 +2186,8 @@
 
             }
 
-            match(input,29,FOLLOW_29_in_rule911); 
-            following.push(FOLLOW_opt_eol_in_rule913);
+            match(input,29,FOLLOW_29_in_rule922); 
+            following.push(FOLLOW_opt_eol_in_rule924);
             opt_eol();
             following.pop();
 
@@ -2169,48 +2210,48 @@
 
 
     // $ANTLR start extra_statement
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:512:1: extra_statement : ( import_statement | function_import_statement | global | function ) ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:529:1: extra_statement : ( import_statement | function_import_statement | global | function ) ;
     public void extra_statement() throws RecognitionException {   
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:514:9: ( ( import_statement | function_import_statement | global | function ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:514:9: ( import_statement | function_import_statement | global | function )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:531:9: ( ( import_statement | function_import_statement | global | function ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:531:9: ( import_statement | function_import_statement | global | function )
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:514:9: ( import_statement | function_import_statement | global | function )
-            int alt28=4;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:531:9: ( import_statement | function_import_statement | global | function )
+            int alt29=4;
             switch ( input.LA(1) ) {
             case 17:
-                int LA28_1 = input.LA(2);
-                if ( LA28_1==18 ) {
-                    alt28=2;
+                int LA29_1 = input.LA(2);
+                if ( LA29_1==18 ) {
+                    alt29=2;
                 }
-                else if ( (LA28_1>=EOL && LA28_1<=ID)||LA28_1==15 ) {
-                    alt28=1;
+                else if ( (LA29_1>=EOL && LA29_1<=ID)||LA29_1==15 ) {
+                    alt29=1;
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("514:9: ( import_statement | function_import_statement | global | function )", 28, 1, input);
+                        new NoViableAltException("531:9: ( import_statement | function_import_statement | global | function )", 29, 1, input);
 
                     throw nvae;
                 }
                 break;
             case 22:
-                alt28=3;
+                alt29=3;
                 break;
             case 18:
-                alt28=4;
+                alt29=4;
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("514:9: ( import_statement | function_import_statement | global | function )", 28, 0, input);
+                    new NoViableAltException("531:9: ( import_statement | function_import_statement | global | function )", 29, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt28) {
+            switch (alt29) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:514:17: import_statement
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:531:17: import_statement
                     {
-                    following.push(FOLLOW_import_statement_in_extra_statement933);
+                    following.push(FOLLOW_import_statement_in_extra_statement944);
                     import_statement();
                     following.pop();
 
@@ -2218,9 +2259,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:515:17: function_import_statement
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:532:17: function_import_statement
                     {
-                    following.push(FOLLOW_function_import_statement_in_extra_statement938);
+                    following.push(FOLLOW_function_import_statement_in_extra_statement949);
                     function_import_statement();
                     following.pop();
 
@@ -2228,9 +2269,9 @@
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:516:17: global
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:533:17: global
                     {
-                    following.push(FOLLOW_global_in_extra_statement943);
+                    following.push(FOLLOW_global_in_extra_statement954);
                     global();
                     following.pop();
 
@@ -2238,9 +2279,9 @@
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:517:17: function
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:534:17: function
                     {
-                    following.push(FOLLOW_function_in_extra_statement948);
+                    following.push(FOLLOW_function_in_extra_statement959);
                     function();
                     following.pop();
 
@@ -2266,116 +2307,116 @@
 
 
     // $ANTLR start rule_attributes
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:521:1: rule_attributes[RuleDescr rule] : ( 'attributes' )? ( ':' )? opt_eol ( ( ',' )? a= rule_attribute opt_eol )* ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:538:1: rule_attributes[RuleDescr rule] : ( 'attributes' )? ( ':' )? opt_eol ( ( ',' )? a= rule_attribute opt_eol )* ;
     public void rule_attributes(RuleDescr rule) throws RecognitionException {   
         AttributeDescr a = null;
 
 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:523:25: ( ( 'attributes' )? ( ':' )? opt_eol ( ( ',' )? a= rule_attribute opt_eol )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:523:25: ( 'attributes' )? ( ':' )? opt_eol ( ( ',' )? a= rule_attribute opt_eol )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:540:25: ( ( 'attributes' )? ( ':' )? opt_eol ( ( ',' )? a= rule_attribute opt_eol )* )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:540:25: ( 'attributes' )? ( ':' )? opt_eol ( ( ',' )? a= rule_attribute opt_eol )*
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:523:25: ( 'attributes' )?
-            int alt29=2;
-            int LA29_0 = input.LA(1);
-            if ( LA29_0==35 ) {
-                alt29=1;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:540:25: ( 'attributes' )?
+            int alt30=2;
+            int LA30_0 = input.LA(1);
+            if ( LA30_0==35 ) {
+                alt30=1;
             }
-            else if ( LA29_0==EOL||LA29_0==15||LA29_0==24||LA29_0==29||(LA29_0>=32 && LA29_0<=34)||(LA29_0>=36 && LA29_0<=41) ) {
-                alt29=2;
+            else if ( LA30_0==EOL||LA30_0==15||LA30_0==24||LA30_0==29||(LA30_0>=32 && LA30_0<=34)||(LA30_0>=36 && LA30_0<=41) ) {
+                alt30=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("523:25: ( \'attributes\' )?", 29, 0, input);
+                    new NoViableAltException("540:25: ( \'attributes\' )?", 30, 0, input);
 
                 throw nvae;
             }
-            switch (alt29) {
+            switch (alt30) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:523:25: 'attributes'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:540:25: 'attributes'
                     {
-                    match(input,35,FOLLOW_35_in_rule_attributes967); 
+                    match(input,35,FOLLOW_35_in_rule_attributes978); 
 
                     }
                     break;
 
             }
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:523:39: ( ':' )?
-            int alt30=2;
-            int LA30_0 = input.LA(1);
-            if ( LA30_0==33 ) {
-                alt30=1;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:540:39: ( ':' )?
+            int alt31=2;
+            int LA31_0 = input.LA(1);
+            if ( LA31_0==33 ) {
+                alt31=1;
             }
-            else if ( LA30_0==EOL||LA30_0==15||LA30_0==24||LA30_0==29||LA30_0==32||LA30_0==34||(LA30_0>=36 && LA30_0<=41) ) {
-                alt30=2;
+            else if ( LA31_0==EOL||LA31_0==15||LA31_0==24||LA31_0==29||LA31_0==32||LA31_0==34||(LA31_0>=36 && LA31_0<=41) ) {
+                alt31=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("523:39: ( \':\' )?", 30, 0, input);
+                    new NoViableAltException("540:39: ( \':\' )?", 31, 0, input);
 
                 throw nvae;
             }
-            switch (alt30) {
+            switch (alt31) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:523:39: ':'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:540:39: ':'
                     {
-                    match(input,33,FOLLOW_33_in_rule_attributes970); 
+                    match(input,33,FOLLOW_33_in_rule_attributes981); 
 
                     }
                     break;
 
             }
 
-            following.push(FOLLOW_opt_eol_in_rule_attributes973);
+            following.push(FOLLOW_opt_eol_in_rule_attributes984);
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:524:25: ( ( ',' )? a= rule_attribute opt_eol )*
-            loop32:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:541:25: ( ( ',' )? a= rule_attribute opt_eol )*
+            loop33:
             do {
-                int alt32=2;
-                int LA32_0 = input.LA(1);
-                if ( LA32_0==24||(LA32_0>=36 && LA32_0<=41) ) {
-                    alt32=1;
+                int alt33=2;
+                int LA33_0 = input.LA(1);
+                if ( LA33_0==24||(LA33_0>=36 && LA33_0<=41) ) {
+                    alt33=1;
                 }
 
 
-                switch (alt32) {
+                switch (alt33) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:524:33: ( ',' )? a= rule_attribute opt_eol
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:541:33: ( ',' )? a= rule_attribute opt_eol
             	    {
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:524:33: ( ',' )?
-            	    int alt31=2;
-            	    int LA31_0 = input.LA(1);
-            	    if ( LA31_0==24 ) {
-            	        alt31=1;
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:541:33: ( ',' )?
+            	    int alt32=2;
+            	    int LA32_0 = input.LA(1);
+            	    if ( LA32_0==24 ) {
+            	        alt32=1;
             	    }
-            	    else if ( (LA31_0>=36 && LA31_0<=41) ) {
-            	        alt31=2;
+            	    else if ( (LA32_0>=36 && LA32_0<=41) ) {
+            	        alt32=2;
             	    }
             	    else {
             	        NoViableAltException nvae =
-            	            new NoViableAltException("524:33: ( \',\' )?", 31, 0, input);
+            	            new NoViableAltException("541:33: ( \',\' )?", 32, 0, input);
 
             	        throw nvae;
             	    }
-            	    switch (alt31) {
+            	    switch (alt32) {
             	        case 1 :
-            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:524:33: ','
+            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:541:33: ','
             	            {
-            	            match(input,24,FOLLOW_24_in_rule_attributes980); 
+            	            match(input,24,FOLLOW_24_in_rule_attributes991); 
 
             	            }
             	            break;
 
             	    }
 
-            	    following.push(FOLLOW_rule_attribute_in_rule_attributes985);
+            	    following.push(FOLLOW_rule_attribute_in_rule_attributes996);
             	    a=rule_attribute();
             	    following.pop();
 
-            	    following.push(FOLLOW_opt_eol_in_rule_attributes987);
+            	    following.push(FOLLOW_opt_eol_in_rule_attributes998);
             	    opt_eol();
             	    following.pop();
 
@@ -2387,7 +2428,7 @@
             	    break;
 
             	default :
-            	    break loop32;
+            	    break loop33;
                 }
             } while (true);
 
@@ -2407,7 +2448,7 @@
 
 
     // $ANTLR start rule_attribute
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:531:1: rule_attribute returns [AttributeDescr d] : (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus );
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:548:1: rule_attribute returns [AttributeDescr d] : (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus );
     public AttributeDescr rule_attribute() throws RecognitionException {   
         AttributeDescr d;
         AttributeDescr a = null;
@@ -2417,39 +2458,39 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:536:25: (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus )
-            int alt33=6;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:553:25: (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus )
+            int alt34=6;
             switch ( input.LA(1) ) {
             case 36:
-                alt33=1;
+                alt34=1;
                 break;
             case 37:
-                alt33=2;
+                alt34=2;
                 break;
             case 40:
-                alt33=3;
+                alt34=3;
                 break;
             case 41:
-                alt33=4;
+                alt34=4;
                 break;
             case 39:
-                alt33=5;
+                alt34=5;
                 break;
             case 38:
-                alt33=6;
+                alt34=6;
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("531:1: rule_attribute returns [AttributeDescr d] : (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus );", 33, 0, input);
+                    new NoViableAltException("548:1: rule_attribute returns [AttributeDescr d] : (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus );", 34, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt33) {
+            switch (alt34) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:536:25: a= salience
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:553:25: a= salience
                     {
-                    following.push(FOLLOW_salience_in_rule_attribute1026);
+                    following.push(FOLLOW_salience_in_rule_attribute1037);
                     a=salience();
                     following.pop();
 
@@ -2458,9 +2499,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:537:25: a= no_loop
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:554:25: a= no_loop
                     {
-                    following.push(FOLLOW_no_loop_in_rule_attribute1036);
+                    following.push(FOLLOW_no_loop_in_rule_attribute1047);
                     a=no_loop();
                     following.pop();
 
@@ -2469,9 +2510,9 @@
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:538:25: a= agenda_group
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:555:25: a= agenda_group
                     {
-                    following.push(FOLLOW_agenda_group_in_rule_attribute1047);
+                    following.push(FOLLOW_agenda_group_in_rule_attribute1058);
                     a=agenda_group();
                     following.pop();
 
@@ -2480,9 +2521,9 @@
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:539:25: a= duration
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:556:25: a= duration
                     {
-                    following.push(FOLLOW_duration_in_rule_attribute1060);
+                    following.push(FOLLOW_duration_in_rule_attribute1071);
                     a=duration();
                     following.pop();
 
@@ -2491,9 +2532,9 @@
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:540:25: a= activation_group
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:557:25: a= activation_group
                     {
-                    following.push(FOLLOW_activation_group_in_rule_attribute1074);
+                    following.push(FOLLOW_activation_group_in_rule_attribute1085);
                     a=activation_group();
                     following.pop();
 
@@ -2502,9 +2543,9 @@
                     }
                     break;
                 case 6 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:541:25: a= auto_focus
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:558:25: a= auto_focus
                     {
-                    following.push(FOLLOW_auto_focus_in_rule_attribute1085);
+                    following.push(FOLLOW_auto_focus_in_rule_attribute1096);
                     a=auto_focus();
                     following.pop();
 
@@ -2527,7 +2568,7 @@
 
 
     // $ANTLR start salience
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:545:1: salience returns [AttributeDescr d ] : loc= 'salience' opt_eol i= INT ( ';' )? opt_eol ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:562:1: salience returns [AttributeDescr d ] : loc= 'salience' opt_eol i= INT ( ';' )? opt_eol ;
     public AttributeDescr salience() throws RecognitionException {   
         AttributeDescr d;
         Token loc=null;
@@ -2537,44 +2578,44 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:550:17: (loc= 'salience' opt_eol i= INT ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:550:17: loc= 'salience' opt_eol i= INT ( ';' )? opt_eol
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:567:17: (loc= 'salience' opt_eol i= INT ( ';' )? opt_eol )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:567:17: loc= 'salience' opt_eol i= INT ( ';' )? opt_eol
             {
             loc=(Token)input.LT(1);
-            match(input,36,FOLLOW_36_in_salience1118); 
-            following.push(FOLLOW_opt_eol_in_salience1120);
+            match(input,36,FOLLOW_36_in_salience1129); 
+            following.push(FOLLOW_opt_eol_in_salience1131);
             opt_eol();
             following.pop();
 
             i=(Token)input.LT(1);
-            match(input,INT,FOLLOW_INT_in_salience1124); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:550:46: ( ';' )?
-            int alt34=2;
-            int LA34_0 = input.LA(1);
-            if ( LA34_0==15 ) {
-                alt34=1;
+            match(input,INT,FOLLOW_INT_in_salience1135); 
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:567:46: ( ';' )?
+            int alt35=2;
+            int LA35_0 = input.LA(1);
+            if ( LA35_0==15 ) {
+                alt35=1;
             }
-            else if ( LA34_0==EOL||LA34_0==24||LA34_0==29||LA34_0==32||LA34_0==34||(LA34_0>=36 && LA34_0<=41) ) {
-                alt34=2;
+            else if ( LA35_0==EOL||LA35_0==24||LA35_0==29||LA35_0==32||LA35_0==34||(LA35_0>=36 && LA35_0<=41) ) {
+                alt35=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("550:46: ( \';\' )?", 34, 0, input);
+                    new NoViableAltException("567:46: ( \';\' )?", 35, 0, input);
 
                 throw nvae;
             }
-            switch (alt34) {
+            switch (alt35) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:550:46: ';'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:567:46: ';'
                     {
-                    match(input,15,FOLLOW_15_in_salience1126); 
+                    match(input,15,FOLLOW_15_in_salience1137); 
 
                     }
                     break;
 
             }
 
-            following.push(FOLLOW_opt_eol_in_salience1129);
+            following.push(FOLLOW_opt_eol_in_salience1140);
             opt_eol();
             following.pop();
 
@@ -2598,7 +2639,7 @@
 
 
     // $ANTLR start no_loop
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:557:1: no_loop returns [AttributeDescr d] : ( (loc= 'no-loop' opt_eol ( ';' )? opt_eol ) | (loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol ) );
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:574:1: no_loop returns [AttributeDescr d] : ( (loc= 'no-loop' opt_eol ( ';' )? opt_eol ) | (loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol ) );
     public AttributeDescr no_loop() throws RecognitionException {   
         AttributeDescr d;
         Token loc=null;
@@ -2608,70 +2649,70 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:562:17: ( (loc= 'no-loop' opt_eol ( ';' )? opt_eol ) | (loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol ) )
-            int alt37=2;
-            int LA37_0 = input.LA(1);
-            if ( LA37_0==37 ) {
-                int LA37_1 = input.LA(2);
-                if ( LA37_1==BOOL ) {
-                    alt37=2;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:579:17: ( (loc= 'no-loop' opt_eol ( ';' )? opt_eol ) | (loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol ) )
+            int alt38=2;
+            int LA38_0 = input.LA(1);
+            if ( LA38_0==37 ) {
+                int LA38_1 = input.LA(2);
+                if ( LA38_1==BOOL ) {
+                    alt38=2;
                 }
-                else if ( LA37_1==EOL||LA37_1==15||LA37_1==24||LA37_1==29||LA37_1==32||LA37_1==34||(LA37_1>=36 && LA37_1<=41) ) {
-                    alt37=1;
+                else if ( LA38_1==EOL||LA38_1==15||LA38_1==24||LA38_1==29||LA38_1==32||LA38_1==34||(LA38_1>=36 && LA38_1<=41) ) {
+                    alt38=1;
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("557:1: no_loop returns [AttributeDescr d] : ( (loc= \'no-loop\' opt_eol ( \';\' )? opt_eol ) | (loc= \'no-loop\' t= BOOL opt_eol ( \';\' )? opt_eol ) );", 37, 1, input);
+                        new NoViableAltException("574:1: no_loop returns [AttributeDescr d] : ( (loc= \'no-loop\' opt_eol ( \';\' )? opt_eol ) | (loc= \'no-loop\' t= BOOL opt_eol ( \';\' )? opt_eol ) );", 38, 1, input);
 
                     throw nvae;
                 }
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("557:1: no_loop returns [AttributeDescr d] : ( (loc= \'no-loop\' opt_eol ( \';\' )? opt_eol ) | (loc= \'no-loop\' t= BOOL opt_eol ( \';\' )? opt_eol ) );", 37, 0, input);
+                    new NoViableAltException("574:1: no_loop returns [AttributeDescr d] : ( (loc= \'no-loop\' opt_eol ( \';\' )? opt_eol ) | (loc= \'no-loop\' t= BOOL opt_eol ( \';\' )? opt_eol ) );", 38, 0, input);
 
                 throw nvae;
             }
-            switch (alt37) {
+            switch (alt38) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:562:17: (loc= 'no-loop' opt_eol ( ';' )? opt_eol )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:579:17: (loc= 'no-loop' opt_eol ( ';' )? opt_eol )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:562:17: (loc= 'no-loop' opt_eol ( ';' )? opt_eol )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:563:25: loc= 'no-loop' opt_eol ( ';' )? opt_eol
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:579:17: (loc= 'no-loop' opt_eol ( ';' )? opt_eol )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:580:25: loc= 'no-loop' opt_eol ( ';' )? opt_eol
                     {
                     loc=(Token)input.LT(1);
-                    match(input,37,FOLLOW_37_in_no_loop1164); 
-                    following.push(FOLLOW_opt_eol_in_no_loop1166);
+                    match(input,37,FOLLOW_37_in_no_loop1175); 
+                    following.push(FOLLOW_opt_eol_in_no_loop1177);
                     opt_eol();
                     following.pop();
 
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:563:47: ( ';' )?
-                    int alt35=2;
-                    int LA35_0 = input.LA(1);
-                    if ( LA35_0==15 ) {
-                        alt35=1;
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:580:47: ( ';' )?
+                    int alt36=2;
+                    int LA36_0 = input.LA(1);
+                    if ( LA36_0==15 ) {
+                        alt36=1;
                     }
-                    else if ( LA35_0==EOL||LA35_0==24||LA35_0==29||LA35_0==32||LA35_0==34||(LA35_0>=36 && LA35_0<=41) ) {
-                        alt35=2;
+                    else if ( LA36_0==EOL||LA36_0==24||LA36_0==29||LA36_0==32||LA36_0==34||(LA36_0>=36 && LA36_0<=41) ) {
+                        alt36=2;
                     }
                     else {
                         NoViableAltException nvae =
-                            new NoViableAltException("563:47: ( \';\' )?", 35, 0, input);
+                            new NoViableAltException("580:47: ( \';\' )?", 36, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt35) {
+                    switch (alt36) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:563:47: ';'
+                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:580:47: ';'
                             {
-                            match(input,15,FOLLOW_15_in_no_loop1168); 
+                            match(input,15,FOLLOW_15_in_no_loop1179); 
 
                             }
                             break;
 
                     }
 
-                    following.push(FOLLOW_opt_eol_in_no_loop1171);
+                    following.push(FOLLOW_opt_eol_in_no_loop1182);
                     opt_eol();
                     following.pop();
 
@@ -2686,46 +2727,46 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:570:17: (loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:587:17: (loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:570:17: (loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:571:25: loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:587:17: (loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:588:25: loc= 'no-loop' t= BOOL opt_eol ( ';' )? opt_eol
                     {
                     loc=(Token)input.LT(1);
-                    match(input,37,FOLLOW_37_in_no_loop1196); 
+                    match(input,37,FOLLOW_37_in_no_loop1207); 
                     t=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_no_loop1200); 
-                    following.push(FOLLOW_opt_eol_in_no_loop1202);
+                    match(input,BOOL,FOLLOW_BOOL_in_no_loop1211); 
+                    following.push(FOLLOW_opt_eol_in_no_loop1213);
                     opt_eol();
                     following.pop();
 
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:571:54: ( ';' )?
-                    int alt36=2;
-                    int LA36_0 = input.LA(1);
-                    if ( LA36_0==15 ) {
-                        alt36=1;
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:588:54: ( ';' )?
+                    int alt37=2;
+                    int LA37_0 = input.LA(1);
+                    if ( LA37_0==15 ) {
+                        alt37=1;
                     }
-                    else if ( LA36_0==EOL||LA36_0==24||LA36_0==29||LA36_0==32||LA36_0==34||(LA36_0>=36 && LA36_0<=41) ) {
-                        alt36=2;
+                    else if ( LA37_0==EOL||LA37_0==24||LA37_0==29||LA37_0==32||LA37_0==34||(LA37_0>=36 && LA37_0<=41) ) {
+                        alt37=2;
                     }
                     else {
                         NoViableAltException nvae =
-                            new NoViableAltException("571:54: ( \';\' )?", 36, 0, input);
+                            new NoViableAltException("588:54: ( \';\' )?", 37, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt36) {
+                    switch (alt37) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:571:54: ';'
+                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:588:54: ';'
                             {
-                            match(input,15,FOLLOW_15_in_no_loop1204); 
+                            match(input,15,FOLLOW_15_in_no_loop1215); 
 
                             }
                             break;
 
                     }
 
-                    following.push(FOLLOW_opt_eol_in_no_loop1207);
+                    following.push(FOLLOW_opt_eol_in_no_loop1218);
                     opt_eol();
                     following.pop();
 
@@ -2754,7 +2795,7 @@
 
 
     // $ANTLR start auto_focus
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:581:1: auto_focus returns [AttributeDescr d] : ( (loc= 'auto-focus' opt_eol ( ';' )? opt_eol ) | (loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol ) );
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:598:1: auto_focus returns [AttributeDescr d] : ( (loc= 'auto-focus' opt_eol ( ';' )? opt_eol ) | (loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol ) );
     public AttributeDescr auto_focus() throws RecognitionException {   
         AttributeDescr d;
         Token loc=null;
@@ -2764,70 +2805,70 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:586:17: ( (loc= 'auto-focus' opt_eol ( ';' )? opt_eol ) | (loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol ) )
-            int alt40=2;
-            int LA40_0 = input.LA(1);
-            if ( LA40_0==38 ) {
-                int LA40_1 = input.LA(2);
-                if ( LA40_1==BOOL ) {
-                    alt40=2;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:603:17: ( (loc= 'auto-focus' opt_eol ( ';' )? opt_eol ) | (loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol ) )
+            int alt41=2;
+            int LA41_0 = input.LA(1);
+            if ( LA41_0==38 ) {
+                int LA41_1 = input.LA(2);
+                if ( LA41_1==BOOL ) {
+                    alt41=2;
                 }
-                else if ( LA40_1==EOL||LA40_1==15||LA40_1==24||LA40_1==29||LA40_1==32||LA40_1==34||(LA40_1>=36 && LA40_1<=41) ) {
-                    alt40=1;
+                else if ( LA41_1==EOL||LA41_1==15||LA41_1==24||LA41_1==29||LA41_1==32||LA41_1==34||(LA41_1>=36 && LA41_1<=41) ) {
+                    alt41=1;
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("581:1: auto_focus returns [AttributeDescr d] : ( (loc= \'auto-focus\' opt_eol ( \';\' )? opt_eol ) | (loc= \'auto-focus\' t= BOOL opt_eol ( \';\' )? opt_eol ) );", 40, 1, input);
+                        new NoViableAltException("598:1: auto_focus returns [AttributeDescr d] : ( (loc= \'auto-focus\' opt_eol ( \';\' )? opt_eol ) | (loc= \'auto-focus\' t= BOOL opt_eol ( \';\' )? opt_eol ) );", 41, 1, input);
 
                     throw nvae;
                 }
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("581:1: auto_focus returns [AttributeDescr d] : ( (loc= \'auto-focus\' opt_eol ( \';\' )? opt_eol ) | (loc= \'auto-focus\' t= BOOL opt_eol ( \';\' )? opt_eol ) );", 40, 0, input);
+                    new NoViableAltException("598:1: auto_focus returns [AttributeDescr d] : ( (loc= \'auto-focus\' opt_eol ( \';\' )? opt_eol ) | (loc= \'auto-focus\' t= BOOL opt_eol ( \';\' )? opt_eol ) );", 41, 0, input);
 
                 throw nvae;
             }
-            switch (alt40) {
+            switch (alt41) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:586:17: (loc= 'auto-focus' opt_eol ( ';' )? opt_eol )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:603:17: (loc= 'auto-focus' opt_eol ( ';' )? opt_eol )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:586:17: (loc= 'auto-focus' opt_eol ( ';' )? opt_eol )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:587:25: loc= 'auto-focus' opt_eol ( ';' )? opt_eol
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:603:17: (loc= 'auto-focus' opt_eol ( ';' )? opt_eol )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:604:25: loc= 'auto-focus' opt_eol ( ';' )? opt_eol
                     {
                     loc=(Token)input.LT(1);
-                    match(input,38,FOLLOW_38_in_auto_focus1253); 
-                    following.push(FOLLOW_opt_eol_in_auto_focus1255);
+                    match(input,38,FOLLOW_38_in_auto_focus1264); 
+                    following.push(FOLLOW_opt_eol_in_auto_focus1266);
                     opt_eol();
                     following.pop();
 
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:587:50: ( ';' )?
-                    int alt38=2;
-                    int LA38_0 = input.LA(1);
-                    if ( LA38_0==15 ) {
-                        alt38=1;
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:604:50: ( ';' )?
+                    int alt39=2;
+                    int LA39_0 = input.LA(1);
+                    if ( LA39_0==15 ) {
+                        alt39=1;
                     }
-                    else if ( LA38_0==EOL||LA38_0==24||LA38_0==29||LA38_0==32||LA38_0==34||(LA38_0>=36 && LA38_0<=41) ) {
-                        alt38=2;
+                    else if ( LA39_0==EOL||LA39_0==24||LA39_0==29||LA39_0==32||LA39_0==34||(LA39_0>=36 && LA39_0<=41) ) {
+                        alt39=2;
                     }
                     else {
                         NoViableAltException nvae =
-                            new NoViableAltException("587:50: ( \';\' )?", 38, 0, input);
+                            new NoViableAltException("604:50: ( \';\' )?", 39, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt38) {
+                    switch (alt39) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:587:50: ';'
+                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:604:50: ';'
                             {
-                            match(input,15,FOLLOW_15_in_auto_focus1257); 
+                            match(input,15,FOLLOW_15_in_auto_focus1268); 
 
                             }
                             break;
 
                     }
 
-                    following.push(FOLLOW_opt_eol_in_auto_focus1260);
+                    following.push(FOLLOW_opt_eol_in_auto_focus1271);
                     opt_eol();
                     following.pop();
 
@@ -2842,46 +2883,46 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:594:17: (loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:611:17: (loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:594:17: (loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:595:25: loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:611:17: (loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:612:25: loc= 'auto-focus' t= BOOL opt_eol ( ';' )? opt_eol
                     {
                     loc=(Token)input.LT(1);
-                    match(input,38,FOLLOW_38_in_auto_focus1285); 
+                    match(input,38,FOLLOW_38_in_auto_focus1296); 
                     t=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_auto_focus1289); 
-                    following.push(FOLLOW_opt_eol_in_auto_focus1291);
+                    match(input,BOOL,FOLLOW_BOOL_in_auto_focus1300); 
+                    following.push(FOLLOW_opt_eol_in_auto_focus1302);
                     opt_eol();
                     following.pop();
 
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:595:57: ( ';' )?
-                    int alt39=2;
-                    int LA39_0 = input.LA(1);
-                    if ( LA39_0==15 ) {
-                        alt39=1;
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:612:57: ( ';' )?
+                    int alt40=2;
+                    int LA40_0 = input.LA(1);
+                    if ( LA40_0==15 ) {
+                        alt40=1;
                     }
-                    else if ( LA39_0==EOL||LA39_0==24||LA39_0==29||LA39_0==32||LA39_0==34||(LA39_0>=36 && LA39_0<=41) ) {
-                        alt39=2;
+                    else if ( LA40_0==EOL||LA40_0==24||LA40_0==29||LA40_0==32||LA40_0==34||(LA40_0>=36 && LA40_0<=41) ) {
+                        alt40=2;
                     }
                     else {
                         NoViableAltException nvae =
-                            new NoViableAltException("595:57: ( \';\' )?", 39, 0, input);
+                            new NoViableAltException("612:57: ( \';\' )?", 40, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt39) {
+                    switch (alt40) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:595:57: ';'
+                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:612:57: ';'
                             {
-                            match(input,15,FOLLOW_15_in_auto_focus1293); 
+                            match(input,15,FOLLOW_15_in_auto_focus1304); 
 
                             }
                             break;
 
                     }
 
-                    following.push(FOLLOW_opt_eol_in_auto_focus1296);
+                    following.push(FOLLOW_opt_eol_in_auto_focus1307);
                     opt_eol();
                     following.pop();
 
@@ -2910,7 +2951,7 @@
 
 
     // $ANTLR start activation_group
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:605:1: activation_group returns [AttributeDescr d] : loc= 'activation-group' opt_eol name= STRING ( ';' )? opt_eol ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:622:1: activation_group returns [AttributeDescr d] : loc= 'activation-group' opt_eol name= STRING ( ';' )? opt_eol ;
     public AttributeDescr activation_group() throws RecognitionException {   
         AttributeDescr d;
         Token loc=null;
@@ -2920,44 +2961,44 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:610:17: (loc= 'activation-group' opt_eol name= STRING ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:610:17: loc= 'activation-group' opt_eol name= STRING ( ';' )? opt_eol
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:627:17: (loc= 'activation-group' opt_eol name= STRING ( ';' )? opt_eol )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:627:17: loc= 'activation-group' opt_eol name= STRING ( ';' )? opt_eol
             {
             loc=(Token)input.LT(1);
-            match(input,39,FOLLOW_39_in_activation_group1338); 
-            following.push(FOLLOW_opt_eol_in_activation_group1340);
+            match(input,39,FOLLOW_39_in_activation_group1349); 
+            following.push(FOLLOW_opt_eol_in_activation_group1351);
             opt_eol();
             following.pop();
 
             name=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_activation_group1344); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:610:60: ( ';' )?
-            int alt41=2;
-            int LA41_0 = input.LA(1);
-            if ( LA41_0==15 ) {
-                alt41=1;
+            match(input,STRING,FOLLOW_STRING_in_activation_group1355); 
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:627:60: ( ';' )?
+            int alt42=2;
+            int LA42_0 = input.LA(1);
+            if ( LA42_0==15 ) {
+                alt42=1;
             }
-            else if ( LA41_0==EOL||LA41_0==24||LA41_0==29||LA41_0==32||LA41_0==34||(LA41_0>=36 && LA41_0<=41) ) {
-                alt41=2;
+            else if ( LA42_0==EOL||LA42_0==24||LA42_0==29||LA42_0==32||LA42_0==34||(LA42_0>=36 && LA42_0<=41) ) {
+                alt42=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("610:60: ( \';\' )?", 41, 0, input);
+                    new NoViableAltException("627:60: ( \';\' )?", 42, 0, input);
 
                 throw nvae;
             }
-            switch (alt41) {
+            switch (alt42) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:610:60: ';'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:627:60: ';'
                     {
-                    match(input,15,FOLLOW_15_in_activation_group1346); 
+                    match(input,15,FOLLOW_15_in_activation_group1357); 
 
                     }
                     break;
 
             }
 
-            following.push(FOLLOW_opt_eol_in_activation_group1349);
+            following.push(FOLLOW_opt_eol_in_activation_group1360);
             opt_eol();
             following.pop();
 
@@ -2981,7 +3022,7 @@
 
 
     // $ANTLR start agenda_group
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:617:1: agenda_group returns [AttributeDescr d] : loc= 'agenda-group' opt_eol name= STRING ( ';' )? opt_eol ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:634:1: agenda_group returns [AttributeDescr d] : loc= 'agenda-group' opt_eol name= STRING ( ';' )? opt_eol ;
     public AttributeDescr agenda_group() throws RecognitionException {   
         AttributeDescr d;
         Token loc=null;
@@ -2991,44 +3032,44 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:622:17: (loc= 'agenda-group' opt_eol name= STRING ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:622:17: loc= 'agenda-group' opt_eol name= STRING ( ';' )? opt_eol
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:639:17: (loc= 'agenda-group' opt_eol name= STRING ( ';' )? opt_eol )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:639:17: loc= 'agenda-group' opt_eol name= STRING ( ';' )? opt_eol
             {
             loc=(Token)input.LT(1);
-            match(input,40,FOLLOW_40_in_agenda_group1378); 
-            following.push(FOLLOW_opt_eol_in_agenda_group1380);
+            match(input,40,FOLLOW_40_in_agenda_group1389); 
+            following.push(FOLLOW_opt_eol_in_agenda_group1391);
             opt_eol();
             following.pop();
 
             name=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_agenda_group1384); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:622:56: ( ';' )?
-            int alt42=2;
-            int LA42_0 = input.LA(1);
-            if ( LA42_0==15 ) {
-                alt42=1;
+            match(input,STRING,FOLLOW_STRING_in_agenda_group1395); 
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:639:56: ( ';' )?
+            int alt43=2;
+            int LA43_0 = input.LA(1);
+            if ( LA43_0==15 ) {
+                alt43=1;
             }
-            else if ( LA42_0==EOL||LA42_0==24||LA42_0==29||LA42_0==32||LA42_0==34||(LA42_0>=36 && LA42_0<=41) ) {
-                alt42=2;
+            else if ( LA43_0==EOL||LA43_0==24||LA43_0==29||LA43_0==32||LA43_0==34||(LA43_0>=36 && LA43_0<=41) ) {
+                alt43=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("622:56: ( \';\' )?", 42, 0, input);
+                    new NoViableAltException("639:56: ( \';\' )?", 43, 0, input);
 
                 throw nvae;
             }
-            switch (alt42) {
+            switch (alt43) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:622:56: ';'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:639:56: ';'
                     {
-                    match(input,15,FOLLOW_15_in_agenda_group1386); 
+                    match(input,15,FOLLOW_15_in_agenda_group1397); 
 
                     }
                     break;
 
             }
 
-            following.push(FOLLOW_opt_eol_in_agenda_group1389);
+            following.push(FOLLOW_opt_eol_in_agenda_group1400);
             opt_eol();
             following.pop();
 
@@ -3052,7 +3093,7 @@
 
 
     // $ANTLR start duration
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:630:1: duration returns [AttributeDescr d] : loc= 'duration' opt_eol i= INT ( ';' )? opt_eol ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:647:1: duration returns [AttributeDescr d] : loc= 'duration' opt_eol i= INT ( ';' )? opt_eol ;
     public AttributeDescr duration() throws RecognitionException {   
         AttributeDescr d;
         Token loc=null;
@@ -3062,44 +3103,44 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:635:17: (loc= 'duration' opt_eol i= INT ( ';' )? opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:635:17: loc= 'duration' opt_eol i= INT ( ';' )? opt_eol
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:652:17: (loc= 'duration' opt_eol i= INT ( ';' )? opt_eol )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:652:17: loc= 'duration' opt_eol i= INT ( ';' )? opt_eol
             {
             loc=(Token)input.LT(1);
-            match(input,41,FOLLOW_41_in_duration1421); 
-            following.push(FOLLOW_opt_eol_in_duration1423);
+            match(input,41,FOLLOW_41_in_duration1432); 
+            following.push(FOLLOW_opt_eol_in_duration1434);
             opt_eol();
             following.pop();
 
             i=(Token)input.LT(1);
-            match(input,INT,FOLLOW_INT_in_duration1427); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:635:46: ( ';' )?
-            int alt43=2;
-            int LA43_0 = input.LA(1);
-            if ( LA43_0==15 ) {
-                alt43=1;
+            match(input,INT,FOLLOW_INT_in_duration1438); 
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:652:46: ( ';' )?
+            int alt44=2;
+            int LA44_0 = input.LA(1);
+            if ( LA44_0==15 ) {
+                alt44=1;
             }
-            else if ( LA43_0==EOL||LA43_0==24||LA43_0==29||LA43_0==32||LA43_0==34||(LA43_0>=36 && LA43_0<=41) ) {
-                alt43=2;
+            else if ( LA44_0==EOL||LA44_0==24||LA44_0==29||LA44_0==32||LA44_0==34||(LA44_0>=36 && LA44_0<=41) ) {
+                alt44=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("635:46: ( \';\' )?", 43, 0, input);
+                    new NoViableAltException("652:46: ( \';\' )?", 44, 0, input);
 
                 throw nvae;
             }
-            switch (alt43) {
+            switch (alt44) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:635:46: ';'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:652:46: ';'
                     {
-                    match(input,15,FOLLOW_15_in_duration1429); 
+                    match(input,15,FOLLOW_15_in_duration1440); 
 
                     }
                     break;
 
             }
 
-            following.push(FOLLOW_opt_eol_in_duration1432);
+            following.push(FOLLOW_opt_eol_in_duration1443);
             opt_eol();
             following.pop();
 
@@ -3123,34 +3164,34 @@
 
 
     // $ANTLR start normal_lhs_block
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:643:1: normal_lhs_block[AndDescr descrs] : (d= lhs opt_eol )* opt_eol ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:660:1: normal_lhs_block[AndDescr descrs] : (d= lhs opt_eol )* opt_eol ;
     public void normal_lhs_block(AndDescr descrs) throws RecognitionException {   
         PatternDescr d = null;
 
 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:645:17: ( (d= lhs opt_eol )* opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:645:17: (d= lhs opt_eol )* opt_eol
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:662:17: ( (d= lhs opt_eol )* opt_eol )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:662:17: (d= lhs opt_eol )* opt_eol
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:645:17: (d= lhs opt_eol )*
-            loop44:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:662:17: (d= lhs opt_eol )*
+            loop45:
             do {
-                int alt44=2;
-                int LA44_0 = input.LA(1);
-                if ( LA44_0==ID||LA44_0==23||(LA44_0>=54 && LA44_0<=56) ) {
-                    alt44=1;
+                int alt45=2;
+                int LA45_0 = input.LA(1);
+                if ( LA45_0==ID||LA45_0==23||(LA45_0>=54 && LA45_0<=56) ) {
+                    alt45=1;
                 }
 
 
-                switch (alt44) {
+                switch (alt45) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:645:25: d= lhs opt_eol
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:662:25: d= lhs opt_eol
             	    {
-            	    following.push(FOLLOW_lhs_in_normal_lhs_block1458);
+            	    following.push(FOLLOW_lhs_in_normal_lhs_block1469);
             	    d=lhs();
             	    following.pop();
 
-            	    following.push(FOLLOW_opt_eol_in_normal_lhs_block1460);
+            	    following.push(FOLLOW_opt_eol_in_normal_lhs_block1471);
             	    opt_eol();
             	    following.pop();
 
@@ -3160,11 +3201,11 @@
             	    break;
 
             	default :
-            	    break loop44;
+            	    break loop45;
                 }
             } while (true);
 
-            following.push(FOLLOW_opt_eol_in_normal_lhs_block1472);
+            following.push(FOLLOW_opt_eol_in_normal_lhs_block1483);
             opt_eol();
             following.pop();
 
@@ -3184,7 +3225,7 @@
 
 
     // $ANTLR start expander_lhs_block
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:653:1: expander_lhs_block[AndDescr descrs] : ( options {greedy=false; } : text= paren_chunk loc= EOL ( EOL )* )* ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:670:1: expander_lhs_block[AndDescr descrs] : ( options {greedy=false; } : text= paren_chunk loc= EOL ( EOL )* )* ;
     public void expander_lhs_block(AndDescr descrs) throws RecognitionException {   
         Token loc=null;
         String text = null;
@@ -3196,22 +3237,22 @@
         		List constraints = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:660:17: ( ( options {greedy=false; } : text= paren_chunk loc= EOL ( EOL )* )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:660:17: ( options {greedy=false; } : text= paren_chunk loc= EOL ( EOL )* )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:677:17: ( ( options {greedy=false; } : text= paren_chunk loc= EOL ( EOL )* )* )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:677:17: ( options {greedy=false; } : text= paren_chunk loc= EOL ( EOL )* )*
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:660:17: ( options {greedy=false; } : text= paren_chunk loc= EOL ( EOL )* )*
-            loop46:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:677:17: ( options {greedy=false; } : text= paren_chunk loc= EOL ( EOL )* )*
+            loop47:
             do {
-                int alt46=2;
+                int alt47=2;
                 switch ( input.LA(1) ) {
                 case 29:
-                    alt46=2;
+                    alt47=2;
                     break;
                 case EOL:
-                    alt46=2;
+                    alt47=2;
                     break;
                 case 34:
-                    alt46=2;
+                    alt47=2;
                     break;
                 case ID:
                 case INT:
@@ -3273,24 +3314,24 @@
                 case 65:
                 case 66:
                 case 67:
-                    alt46=1;
+                    alt47=1;
                     break;
                 case 15:
-                    alt46=2;
+                    alt47=2;
                     break;
 
                 }
 
-                switch (alt46) {
+                switch (alt47) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:661:25: text= paren_chunk loc= EOL ( EOL )*
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:678:25: text= paren_chunk loc= EOL ( EOL )*
             	    {
-            	    following.push(FOLLOW_paren_chunk_in_expander_lhs_block1513);
+            	    following.push(FOLLOW_paren_chunk_in_expander_lhs_block1524);
             	    text=paren_chunk();
             	    following.pop();
 
             	    loc=(Token)input.LT(1);
-            	    match(input,EOL,FOLLOW_EOL_in_expander_lhs_block1517); 
+            	    match(input,EOL,FOLLOW_EOL_in_expander_lhs_block1528); 
 
             	    				//only expand non null
             	    				if (text != null) {
@@ -3315,27 +3356,27 @@
             	    					text = null;
             	    				}
             	    			
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:687:17: ( EOL )*
-            	    loop45:
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:704:17: ( EOL )*
+            	    loop46:
             	    do {
-            	        int alt45=2;
-            	        int LA45_0 = input.LA(1);
-            	        if ( LA45_0==EOL ) {
-            	            alt45=1;
+            	        int alt46=2;
+            	        int LA46_0 = input.LA(1);
+            	        if ( LA46_0==EOL ) {
+            	            alt46=1;
             	        }
 
 
-            	        switch (alt45) {
+            	        switch (alt46) {
             	    	case 1 :
-            	    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:687:18: EOL
+            	    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:704:18: EOL
             	    	    {
-            	    	    match(input,EOL,FOLLOW_EOL_in_expander_lhs_block1532); 
+            	    	    match(input,EOL,FOLLOW_EOL_in_expander_lhs_block1543); 
 
             	    	    }
             	    	    break;
 
             	    	default :
-            	    	    break loop45;
+            	    	    break loop46;
             	        }
             	    } while (true);
 
@@ -3344,7 +3385,7 @@
             	    break;
 
             	default :
-            	    break loop46;
+            	    break loop47;
                 }
             } while (true);
 
@@ -3371,7 +3412,7 @@
 
 
     // $ANTLR start lhs
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:701:1: lhs returns [PatternDescr d] : l= lhs_or ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:718:1: lhs returns [PatternDescr d] : l= lhs_or ;
     public PatternDescr lhs() throws RecognitionException {   
         PatternDescr d;
         PatternDescr l = null;
@@ -3381,10 +3422,10 @@
         		d=null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:705:17: (l= lhs_or )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:705:17: l= lhs_or
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:722:17: (l= lhs_or )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:722:17: l= lhs_or
             {
-            following.push(FOLLOW_lhs_or_in_lhs1574);
+            following.push(FOLLOW_lhs_or_in_lhs1585);
             l=lhs_or();
             following.pop();
 
@@ -3405,7 +3446,7 @@
 
 
     // $ANTLR start lhs_column
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:709:1: lhs_column returns [PatternDescr d] : (f= fact_binding | f= fact );
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:726:1: lhs_column returns [PatternDescr d] : (f= fact_binding | f= fact );
     public PatternDescr lhs_column() throws RecognitionException {   
         PatternDescr d;
         PatternDescr f = null;
@@ -3415,14 +3456,14 @@
         		d=null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:713:17: (f= fact_binding | f= fact )
-            int alt47=2;
-            alt47 = dfa47.predict(input); 
-            switch (alt47) {
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:730:17: (f= fact_binding | f= fact )
+            int alt48=2;
+            alt48 = dfa48.predict(input); 
+            switch (alt48) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:713:17: f= fact_binding
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:730:17: f= fact_binding
                     {
-                    following.push(FOLLOW_fact_binding_in_lhs_column1602);
+                    following.push(FOLLOW_fact_binding_in_lhs_column1613);
                     f=fact_binding();
                     following.pop();
 
@@ -3431,9 +3472,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:714:17: f= fact
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:731:17: f= fact
                     {
-                    following.push(FOLLOW_fact_in_lhs_column1611);
+                    following.push(FOLLOW_fact_in_lhs_column1622);
                     f=fact();
                     following.pop();
 
@@ -3456,7 +3497,7 @@
 
 
     // $ANTLR start from_statement
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:717:1: from_statement returns [FromDescr d] : 'from' opt_eol ds= from_source ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:734:1: from_statement returns [FromDescr d] : 'from' opt_eol ds= from_source ;
     public FromDescr from_statement() throws RecognitionException {   
         FromDescr d;
         DeclarativeInvokerDescr ds = null;
@@ -3466,15 +3507,15 @@
         		d=factory.createFrom();
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:722:17: ( 'from' opt_eol ds= from_source )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:722:17: 'from' opt_eol ds= from_source
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:739:17: ( 'from' opt_eol ds= from_source )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:739:17: 'from' opt_eol ds= from_source
             {
-            match(input,42,FOLLOW_42_in_from_statement1639); 
-            following.push(FOLLOW_opt_eol_in_from_statement1641);
+            match(input,42,FOLLOW_42_in_from_statement1650); 
+            following.push(FOLLOW_opt_eol_in_from_statement1652);
             opt_eol();
             following.pop();
 
-            following.push(FOLLOW_from_source_in_from_statement1645);
+            following.push(FOLLOW_from_source_in_from_statement1656);
             ds=from_source();
             following.pop();
 
@@ -3498,7 +3539,7 @@
 
 
     // $ANTLR start from_source
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:732:1: from_source returns [DeclarativeInvokerDescr ds] : ( (var= ID '.' field= ID ) | (var= ID '.' method= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' ) | (functionName= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' ) );
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:749:1: from_source returns [DeclarativeInvokerDescr ds] : ( (var= ID '.' field= ID ) | (var= ID '.' method= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' ) | (functionName= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' ) );
     public DeclarativeInvokerDescr from_source() throws RecognitionException {   
         DeclarativeInvokerDescr ds;
         Token var=null;
@@ -3512,21 +3553,21 @@
         		ds = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:737:17: ( (var= ID '.' field= ID ) | (var= ID '.' method= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' ) | (functionName= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' ) )
-            int alt48=3;
-            alt48 = dfa48.predict(input); 
-            switch (alt48) {
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:754:17: ( (var= ID '.' field= ID ) | (var= ID '.' method= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' ) | (functionName= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' ) )
+            int alt49=3;
+            alt49 = dfa49.predict(input); 
+            switch (alt49) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:737:17: (var= ID '.' field= ID )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:754:17: (var= ID '.' field= ID )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:737:17: (var= ID '.' field= ID )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:737:18: var= ID '.' field= ID
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:754:17: (var= ID '.' field= ID )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:754:18: var= ID '.' field= ID
                     {
                     var=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_from_source1689); 
-                    match(input,19,FOLLOW_19_in_from_source1691); 
+                    match(input,ID,FOLLOW_ID_in_from_source1700); 
+                    match(input,19,FOLLOW_19_in_from_source1702); 
                     field=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_from_source1695); 
+                    match(input,ID,FOLLOW_ID_in_from_source1706); 
 
                     			  FieldAccessDescr fa = new FieldAccessDescr(var.getText(), field.getText());	
                     			  fa.setLine(var.getLine());
@@ -3539,34 +3580,34 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:747:17: (var= ID '.' method= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:764:17: (var= ID '.' method= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:747:17: (var= ID '.' method= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:747:18: var= ID '.' method= ID opt_eol '(' opt_eol args= argument_list opt_eol ')'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:764:17: (var= ID '.' method= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:764:18: var= ID '.' method= ID opt_eol '(' opt_eol args= argument_list opt_eol ')'
                     {
                     var=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_from_source1722); 
-                    match(input,19,FOLLOW_19_in_from_source1724); 
+                    match(input,ID,FOLLOW_ID_in_from_source1733); 
+                    match(input,19,FOLLOW_19_in_from_source1735); 
                     method=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_from_source1728); 
-                    following.push(FOLLOW_opt_eol_in_from_source1730);
+                    match(input,ID,FOLLOW_ID_in_from_source1739); 
+                    following.push(FOLLOW_opt_eol_in_from_source1741);
                     opt_eol();
                     following.pop();
 
-                    match(input,23,FOLLOW_23_in_from_source1733); 
-                    following.push(FOLLOW_opt_eol_in_from_source1735);
+                    match(input,23,FOLLOW_23_in_from_source1744); 
+                    following.push(FOLLOW_opt_eol_in_from_source1746);
                     opt_eol();
                     following.pop();
 
-                    following.push(FOLLOW_argument_list_in_from_source1739);
+                    following.push(FOLLOW_argument_list_in_from_source1750);
                     args=argument_list();
                     following.pop();
 
-                    following.push(FOLLOW_opt_eol_in_from_source1741);
+                    following.push(FOLLOW_opt_eol_in_from_source1752);
                     opt_eol();
                     following.pop();
 
-                    match(input,25,FOLLOW_25_in_from_source1743); 
+                    match(input,25,FOLLOW_25_in_from_source1754); 
 
                     			MethodAccessDescr mc = new MethodAccessDescr(var.getText(), method.getText());
                     			mc.setArguments(args);
@@ -3580,31 +3621,31 @@
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:756:17: (functionName= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:773:17: (functionName= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:756:17: (functionName= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:756:18: functionName= ID opt_eol '(' opt_eol args= argument_list opt_eol ')'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:773:17: (functionName= ID opt_eol '(' opt_eol args= argument_list opt_eol ')' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:773:18: functionName= ID opt_eol '(' opt_eol args= argument_list opt_eol ')'
                     {
                     functionName=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_from_source1765); 
-                    following.push(FOLLOW_opt_eol_in_from_source1767);
+                    match(input,ID,FOLLOW_ID_in_from_source1776); 
+                    following.push(FOLLOW_opt_eol_in_from_source1778);
                     opt_eol();
                     following.pop();
 
-                    match(input,23,FOLLOW_23_in_from_source1769); 
-                    following.push(FOLLOW_opt_eol_in_from_source1771);
+                    match(input,23,FOLLOW_23_in_from_source1780); 
+                    following.push(FOLLOW_opt_eol_in_from_source1782);
                     opt_eol();
                     following.pop();
 
-                    following.push(FOLLOW_argument_list_in_from_source1775);
+                    following.push(FOLLOW_argument_list_in_from_source1786);
                     args=argument_list();
                     following.pop();
 
-                    following.push(FOLLOW_opt_eol_in_from_source1777);
+                    following.push(FOLLOW_opt_eol_in_from_source1788);
                     opt_eol();
                     following.pop();
 
-                    match(input,25,FOLLOW_25_in_from_source1779); 
+                    match(input,25,FOLLOW_25_in_from_source1790); 
 
                     			FunctionCallDescr fc = new FunctionCallDescr(functionName.getText());
                     			fc.setLine(functionName.getLine());
@@ -3632,7 +3673,7 @@
 
 
     // $ANTLR start argument_list
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:769:1: argument_list returns [ArrayList args] : (param= argument_value ( opt_eol ',' opt_eol param= argument_value )* )? ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:786:1: argument_list returns [ArrayList args] : (param= argument_value ( opt_eol ',' opt_eol param= argument_value )* )? ;
     public ArrayList argument_list() throws RecognitionException {   
         ArrayList args;
         ArgumentValueDescr param = null;
@@ -3642,29 +3683,29 @@
         		args = new ArrayList();
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:774:17: ( (param= argument_value ( opt_eol ',' opt_eol param= argument_value )* )? )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:774:17: (param= argument_value ( opt_eol ',' opt_eol param= argument_value )* )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:791:17: ( (param= argument_value ( opt_eol ',' opt_eol param= argument_value )* )? )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:791:17: (param= argument_value ( opt_eol ',' opt_eol param= argument_value )* )?
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:774:17: (param= argument_value ( opt_eol ',' opt_eol param= argument_value )* )?
-            int alt50=2;
-            int LA50_0 = input.LA(1);
-            if ( (LA50_0>=ID && LA50_0<=FLOAT)||LA50_0==26||LA50_0==43||LA50_0==45 ) {
-                alt50=1;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:791:17: (param= argument_value ( opt_eol ',' opt_eol param= argument_value )* )?
+            int alt51=2;
+            int LA51_0 = input.LA(1);
+            if ( (LA51_0>=ID && LA51_0<=FLOAT)||LA51_0==26||LA51_0==43||LA51_0==45 ) {
+                alt51=1;
             }
-            else if ( LA50_0==EOL||LA50_0==15||LA50_0==25 ) {
-                alt50=2;
+            else if ( LA51_0==EOL||LA51_0==15||LA51_0==25 ) {
+                alt51=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("774:17: (param= argument_value ( opt_eol \',\' opt_eol param= argument_value )* )?", 50, 0, input);
+                    new NoViableAltException("791:17: (param= argument_value ( opt_eol \',\' opt_eol param= argument_value )* )?", 51, 0, input);
 
                 throw nvae;
             }
-            switch (alt50) {
+            switch (alt51) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:774:18: param= argument_value ( opt_eol ',' opt_eol param= argument_value )*
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:791:18: param= argument_value ( opt_eol ',' opt_eol param= argument_value )*
                     {
-                    following.push(FOLLOW_argument_value_in_argument_list1822);
+                    following.push(FOLLOW_argument_value_in_argument_list1833);
                     param=argument_value();
                     following.pop();
 
@@ -3673,25 +3714,25 @@
                     				args.add(param);
                     			}
                     		
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:780:17: ( opt_eol ',' opt_eol param= argument_value )*
-                    loop49:
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:797:17: ( opt_eol ',' opt_eol param= argument_value )*
+                    loop50:
                     do {
-                        int alt49=2;
-                        alt49 = dfa49.predict(input); 
-                        switch (alt49) {
+                        int alt50=2;
+                        alt50 = dfa50.predict(input); 
+                        switch (alt50) {
                     	case 1 :
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:781:25: opt_eol ',' opt_eol param= argument_value
+                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:798:25: opt_eol ',' opt_eol param= argument_value
                     	    {
-                    	    following.push(FOLLOW_opt_eol_in_argument_list1838);
+                    	    following.push(FOLLOW_opt_eol_in_argument_list1849);
                     	    opt_eol();
                     	    following.pop();
 
-                    	    match(input,24,FOLLOW_24_in_argument_list1840); 
-                    	    following.push(FOLLOW_opt_eol_in_argument_list1842);
+                    	    match(input,24,FOLLOW_24_in_argument_list1851); 
+                    	    following.push(FOLLOW_opt_eol_in_argument_list1853);
                     	    opt_eol();
                     	    following.pop();
 
-                    	    following.push(FOLLOW_argument_value_in_argument_list1846);
+                    	    following.push(FOLLOW_argument_value_in_argument_list1857);
                     	    param=argument_value();
                     	    following.pop();
 
@@ -3705,7 +3746,7 @@
                     	    break;
 
                     	default :
-                    	    break loop49;
+                    	    break loop50;
                         }
                     } while (true);
 
@@ -3731,7 +3772,7 @@
 
 
     // $ANTLR start argument_value
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:790:1: argument_value returns [ArgumentValueDescr value] : (t= STRING | t= INT | t= FLOAT | t= BOOL | t= ID | t= 'null' | t= 'null' | m= inline_map | a= inline_array ) ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:807:1: argument_value returns [ArgumentValueDescr value] : (t= STRING | t= INT | t= FLOAT | t= BOOL | t= ID | t= 'null' | t= 'null' | m= inline_map | a= inline_array ) ;
     public ArgumentValueDescr argument_value() throws RecognitionException {   
         ArgumentValueDescr value;
         Token t=null;
@@ -3745,111 +3786,111 @@
         		String text = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:795:17: ( (t= STRING | t= INT | t= FLOAT | t= BOOL | t= ID | t= 'null' | t= 'null' | m= inline_map | a= inline_array ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:795:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= ID | t= 'null' | t= 'null' | m= inline_map | a= inline_array )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:812:17: ( (t= STRING | t= INT | t= FLOAT | t= BOOL | t= ID | t= 'null' | t= 'null' | m= inline_map | a= inline_array ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:812:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= ID | t= 'null' | t= 'null' | m= inline_map | a= inline_array )
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:795:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= ID | t= 'null' | t= 'null' | m= inline_map | a= inline_array )
-            int alt51=9;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:812:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= ID | t= 'null' | t= 'null' | m= inline_map | a= inline_array )
+            int alt52=9;
             switch ( input.LA(1) ) {
             case STRING:
-                alt51=1;
+                alt52=1;
                 break;
             case INT:
-                alt51=2;
+                alt52=2;
                 break;
             case FLOAT:
-                alt51=3;
+                alt52=3;
                 break;
             case BOOL:
-                alt51=4;
+                alt52=4;
                 break;
             case ID:
-                alt51=5;
+                alt52=5;
                 break;
             case 43:
-                alt51=6;
+                alt52=6;
                 break;
             case 26:
-                alt51=8;
+                alt52=8;
                 break;
             case 45:
-                alt51=9;
+                alt52=9;
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("795:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= ID | t= \'null\' | t= \'null\' | m= inline_map | a= inline_array )", 51, 0, input);
+                    new NoViableAltException("812:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= ID | t= \'null\' | t= \'null\' | m= inline_map | a= inline_array )", 52, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt51) {
+            switch (alt52) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:795:25: t= STRING
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:812:25: t= STRING
                     {
                     t=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_argument_value1886); 
+                    match(input,STRING,FOLLOW_STRING_in_argument_value1897); 
                      text = getString( t );  value=new ArgumentValueDescr(ArgumentValueDescr.STRING, text);
 
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:796:25: t= INT
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:813:25: t= INT
                     {
                     t=(Token)input.LT(1);
-                    match(input,INT,FOLLOW_INT_in_argument_value1897); 
+                    match(input,INT,FOLLOW_INT_in_argument_value1908); 
                      text = t.getText();  value=new ArgumentValueDescr(ArgumentValueDescr.INTEGRAL, text);
 
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:797:25: t= FLOAT
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:814:25: t= FLOAT
                     {
                     t=(Token)input.LT(1);
-                    match(input,FLOAT,FOLLOW_FLOAT_in_argument_value1910); 
+                    match(input,FLOAT,FOLLOW_FLOAT_in_argument_value1921); 
                      text = t.getText(); value=new ArgumentValueDescr(ArgumentValueDescr.DECIMAL, text); 
 
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:798:25: t= BOOL
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:815:25: t= BOOL
                     {
                     t=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_argument_value1921); 
+                    match(input,BOOL,FOLLOW_BOOL_in_argument_value1932); 
                      text = t.getText(); value=new ArgumentValueDescr(ArgumentValueDescr.BOOLEAN, text); 
 
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:799:25: t= ID
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:816:25: t= ID
                     {
                     t=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_argument_value1933); 
+                    match(input,ID,FOLLOW_ID_in_argument_value1944); 
                      text = t.getText(); value=new ArgumentValueDescr(ArgumentValueDescr.VARIABLE, text);
 
                     }
                     break;
                 case 6 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:800:25: t= 'null'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:817:25: t= 'null'
                     {
                     t=(Token)input.LT(1);
-                    match(input,43,FOLLOW_43_in_argument_value1944); 
+                    match(input,43,FOLLOW_43_in_argument_value1955); 
                      text = "null"; value=new ArgumentValueDescr(ArgumentValueDescr.NULL, text);
 
                     }
                     break;
                 case 7 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:801:25: t= 'null'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:818:25: t= 'null'
                     {
                     t=(Token)input.LT(1);
-                    match(input,43,FOLLOW_43_in_argument_value1955); 
+                    match(input,43,FOLLOW_43_in_argument_value1966); 
                      text = "null"; value=new ArgumentValueDescr(ArgumentValueDescr.NULL, text);
 
                     }
                     break;
                 case 8 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:802:25: m= inline_map
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:819:25: m= inline_map
                     {
-                    following.push(FOLLOW_inline_map_in_argument_value1974);
+                    following.push(FOLLOW_inline_map_in_argument_value1985);
                     m=inline_map();
                     following.pop();
 
@@ -3858,9 +3899,9 @@
                     }
                     break;
                 case 9 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:803:25: a= inline_array
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:820:25: a= inline_array
                     {
-                    following.push(FOLLOW_inline_array_in_argument_value1990);
+                    following.push(FOLLOW_inline_array_in_argument_value2001);
                     a=inline_array();
                     following.pop();
 
@@ -3887,7 +3928,7 @@
 
 
     // $ANTLR start inline_map
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:807:1: inline_map returns [ArgumentValueDescr.MapDescr mapDescr] : '{' (key= argument_value '=>' value= argument_value ) ( ( EOL )? ',' ( EOL )? key= argument_value '=>' value= argument_value )* '}' ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:824:1: inline_map returns [ArgumentValueDescr.MapDescr mapDescr] : '{' (key= argument_value '=>' value= argument_value ) ( ( EOL )? ',' ( EOL )? key= argument_value '=>' value= argument_value )* '}' ;
     public ArgumentValueDescr.MapDescr inline_map() throws RecognitionException {   
         ArgumentValueDescr.MapDescr mapDescr;
         ArgumentValueDescr key = null;
@@ -3899,19 +3940,19 @@
                 mapDescr = new ArgumentValueDescr.MapDescr();
             
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:811:8: ( '{' (key= argument_value '=>' value= argument_value ) ( ( EOL )? ',' ( EOL )? key= argument_value '=>' value= argument_value )* '}' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:811:8: '{' (key= argument_value '=>' value= argument_value ) ( ( EOL )? ',' ( EOL )? key= argument_value '=>' value= argument_value )* '}'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:828:8: ( '{' (key= argument_value '=>' value= argument_value ) ( ( EOL )? ',' ( EOL )? key= argument_value '=>' value= argument_value )* '}' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:828:8: '{' (key= argument_value '=>' value= argument_value ) ( ( EOL )? ',' ( EOL )? key= argument_value '=>' value= argument_value )* '}'
             {
-            match(input,26,FOLLOW_26_in_inline_map2030); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:812:12: (key= argument_value '=>' value= argument_value )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:812:14: key= argument_value '=>' value= argument_value
+            match(input,26,FOLLOW_26_in_inline_map2041); 
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:829:12: (key= argument_value '=>' value= argument_value )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:829:14: key= argument_value '=>' value= argument_value
             {
-            following.push(FOLLOW_argument_value_in_inline_map2048);
+            following.push(FOLLOW_argument_value_in_inline_map2059);
             key=argument_value();
             following.pop();
 
-            match(input,44,FOLLOW_44_in_inline_map2050); 
-            following.push(FOLLOW_argument_value_in_inline_map2054);
+            match(input,44,FOLLOW_44_in_inline_map2061); 
+            following.push(FOLLOW_argument_value_in_inline_map2065);
             value=argument_value();
             following.pop();
 
@@ -3923,79 +3964,79 @@
 
             }
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:819:12: ( ( EOL )? ',' ( EOL )? key= argument_value '=>' value= argument_value )*
-            loop54:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:836:12: ( ( EOL )? ',' ( EOL )? key= argument_value '=>' value= argument_value )*
+            loop55:
             do {
-                int alt54=2;
-                int LA54_0 = input.LA(1);
-                if ( LA54_0==EOL||LA54_0==24 ) {
-                    alt54=1;
+                int alt55=2;
+                int LA55_0 = input.LA(1);
+                if ( LA55_0==EOL||LA55_0==24 ) {
+                    alt55=1;
                 }
 
 
-                switch (alt54) {
+                switch (alt55) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:819:14: ( EOL )? ',' ( EOL )? key= argument_value '=>' value= argument_value
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:836:14: ( EOL )? ',' ( EOL )? key= argument_value '=>' value= argument_value
             	    {
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:819:14: ( EOL )?
-            	    int alt52=2;
-            	    int LA52_0 = input.LA(1);
-            	    if ( LA52_0==EOL ) {
-            	        alt52=1;
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:836:14: ( EOL )?
+            	    int alt53=2;
+            	    int LA53_0 = input.LA(1);
+            	    if ( LA53_0==EOL ) {
+            	        alt53=1;
             	    }
-            	    else if ( LA52_0==24 ) {
-            	        alt52=2;
+            	    else if ( LA53_0==24 ) {
+            	        alt53=2;
             	    }
             	    else {
             	        NoViableAltException nvae =
-            	            new NoViableAltException("819:14: ( EOL )?", 52, 0, input);
+            	            new NoViableAltException("836:14: ( EOL )?", 53, 0, input);
 
             	        throw nvae;
             	    }
-            	    switch (alt52) {
+            	    switch (alt53) {
             	        case 1 :
-            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:819:15: EOL
+            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:836:15: EOL
             	            {
-            	            match(input,EOL,FOLLOW_EOL_in_inline_map2097); 
+            	            match(input,EOL,FOLLOW_EOL_in_inline_map2108); 
 
             	            }
             	            break;
 
             	    }
 
-            	    match(input,24,FOLLOW_24_in_inline_map2101); 
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:819:25: ( EOL )?
-            	    int alt53=2;
-            	    int LA53_0 = input.LA(1);
-            	    if ( LA53_0==EOL ) {
-            	        alt53=1;
+            	    match(input,24,FOLLOW_24_in_inline_map2112); 
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:836:25: ( EOL )?
+            	    int alt54=2;
+            	    int LA54_0 = input.LA(1);
+            	    if ( LA54_0==EOL ) {
+            	        alt54=1;
             	    }
-            	    else if ( (LA53_0>=ID && LA53_0<=FLOAT)||LA53_0==26||LA53_0==43||LA53_0==45 ) {
-            	        alt53=2;
+            	    else if ( (LA54_0>=ID && LA54_0<=FLOAT)||LA54_0==26||LA54_0==43||LA54_0==45 ) {
+            	        alt54=2;
             	    }
             	    else {
             	        NoViableAltException nvae =
-            	            new NoViableAltException("819:25: ( EOL )?", 53, 0, input);
+            	            new NoViableAltException("836:25: ( EOL )?", 54, 0, input);
 
             	        throw nvae;
             	    }
-            	    switch (alt53) {
+            	    switch (alt54) {
             	        case 1 :
-            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:819:26: EOL
+            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:836:26: EOL
             	            {
-            	            match(input,EOL,FOLLOW_EOL_in_inline_map2104); 
+            	            match(input,EOL,FOLLOW_EOL_in_inline_map2115); 
 
             	            }
             	            break;
 
             	    }
 
-            	    following.push(FOLLOW_argument_value_in_inline_map2110);
+            	    following.push(FOLLOW_argument_value_in_inline_map2121);
             	    key=argument_value();
             	    following.pop();
 
-            	    match(input,44,FOLLOW_44_in_inline_map2112); 
-            	    following.push(FOLLOW_argument_value_in_inline_map2116);
+            	    match(input,44,FOLLOW_44_in_inline_map2123); 
+            	    following.push(FOLLOW_argument_value_in_inline_map2127);
             	    value=argument_value();
             	    following.pop();
 
@@ -4009,11 +4050,11 @@
             	    break;
 
             	default :
-            	    break loop54;
+            	    break loop55;
                 }
             } while (true);
 
-            match(input,27,FOLLOW_27_in_inline_map2152); 
+            match(input,27,FOLLOW_27_in_inline_map2163); 
 
             }
 
@@ -4030,7 +4071,7 @@
 
 
     // $ANTLR start inline_array
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:828:1: inline_array returns [List list] : '[' arg= argument_value ( ( EOL )? ',' ( EOL )? arg= argument_value )* ']' ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:845:1: inline_array returns [List list] : '[' arg= argument_value ( ( EOL )? ',' ( EOL )? arg= argument_value )* ']' ;
     public List inline_array() throws RecognitionException {   
         List list;
         ArgumentValueDescr arg = null;
@@ -4040,83 +4081,83 @@
             	list = new ArrayList();
             
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:833:5: ( '[' arg= argument_value ( ( EOL )? ',' ( EOL )? arg= argument_value )* ']' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:833:5: '[' arg= argument_value ( ( EOL )? ',' ( EOL )? arg= argument_value )* ']'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:850:5: ( '[' arg= argument_value ( ( EOL )? ',' ( EOL )? arg= argument_value )* ']' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:850:5: '[' arg= argument_value ( ( EOL )? ',' ( EOL )? arg= argument_value )* ']'
             {
-            match(input,45,FOLLOW_45_in_inline_array2196); 
-            following.push(FOLLOW_argument_value_in_inline_array2200);
+            match(input,45,FOLLOW_45_in_inline_array2207); 
+            following.push(FOLLOW_argument_value_in_inline_array2211);
             arg=argument_value();
             following.pop();
 
              list.add(arg); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:835:10: ( ( EOL )? ',' ( EOL )? arg= argument_value )*
-            loop57:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:852:10: ( ( EOL )? ',' ( EOL )? arg= argument_value )*
+            loop58:
             do {
-                int alt57=2;
-                int LA57_0 = input.LA(1);
-                if ( LA57_0==EOL||LA57_0==24 ) {
-                    alt57=1;
+                int alt58=2;
+                int LA58_0 = input.LA(1);
+                if ( LA58_0==EOL||LA58_0==24 ) {
+                    alt58=1;
                 }
 
 
-                switch (alt57) {
+                switch (alt58) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:835:12: ( EOL )? ',' ( EOL )? arg= argument_value
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:852:12: ( EOL )? ',' ( EOL )? arg= argument_value
             	    {
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:835:12: ( EOL )?
-            	    int alt55=2;
-            	    int LA55_0 = input.LA(1);
-            	    if ( LA55_0==EOL ) {
-            	        alt55=1;
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:852:12: ( EOL )?
+            	    int alt56=2;
+            	    int LA56_0 = input.LA(1);
+            	    if ( LA56_0==EOL ) {
+            	        alt56=1;
             	    }
-            	    else if ( LA55_0==24 ) {
-            	        alt55=2;
+            	    else if ( LA56_0==24 ) {
+            	        alt56=2;
             	    }
             	    else {
             	        NoViableAltException nvae =
-            	            new NoViableAltException("835:12: ( EOL )?", 55, 0, input);
+            	            new NoViableAltException("852:12: ( EOL )?", 56, 0, input);
 
             	        throw nvae;
             	    }
-            	    switch (alt55) {
+            	    switch (alt56) {
             	        case 1 :
-            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:835:12: EOL
+            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:852:12: EOL
             	            {
-            	            match(input,EOL,FOLLOW_EOL_in_inline_array2218); 
+            	            match(input,EOL,FOLLOW_EOL_in_inline_array2229); 
 
             	            }
             	            break;
 
             	    }
 
-            	    match(input,24,FOLLOW_24_in_inline_array2221); 
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:835:21: ( EOL )?
-            	    int alt56=2;
-            	    int LA56_0 = input.LA(1);
-            	    if ( LA56_0==EOL ) {
-            	        alt56=1;
+            	    match(input,24,FOLLOW_24_in_inline_array2232); 
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:852:21: ( EOL )?
+            	    int alt57=2;
+            	    int LA57_0 = input.LA(1);
+            	    if ( LA57_0==EOL ) {
+            	        alt57=1;
             	    }
-            	    else if ( (LA56_0>=ID && LA56_0<=FLOAT)||LA56_0==26||LA56_0==43||LA56_0==45 ) {
-            	        alt56=2;
+            	    else if ( (LA57_0>=ID && LA57_0<=FLOAT)||LA57_0==26||LA57_0==43||LA57_0==45 ) {
+            	        alt57=2;
             	    }
             	    else {
             	        NoViableAltException nvae =
-            	            new NoViableAltException("835:21: ( EOL )?", 56, 0, input);
+            	            new NoViableAltException("852:21: ( EOL )?", 57, 0, input);
 
             	        throw nvae;
             	    }
-            	    switch (alt56) {
+            	    switch (alt57) {
             	        case 1 :
-            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:835:21: EOL
+            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:852:21: EOL
             	            {
-            	            match(input,EOL,FOLLOW_EOL_in_inline_array2223); 
+            	            match(input,EOL,FOLLOW_EOL_in_inline_array2234); 
 
             	            }
             	            break;
 
             	    }
 
-            	    following.push(FOLLOW_argument_value_in_inline_array2228);
+            	    following.push(FOLLOW_argument_value_in_inline_array2239);
             	    arg=argument_value();
             	    following.pop();
 
@@ -4126,11 +4167,11 @@
             	    break;
 
             	default :
-            	    break loop57;
+            	    break loop58;
                 }
             } while (true);
 
-            match(input,46,FOLLOW_46_in_inline_array2241); 
+            match(input,46,FOLLOW_46_in_inline_array2252); 
 
             }
 
@@ -4147,7 +4188,7 @@
 
 
     // $ANTLR start fact_binding
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:840:1: fact_binding returns [PatternDescr d] : id= ID opt_eol ':' opt_eol fe= fact_expression[id.getText()] ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:857:1: fact_binding returns [PatternDescr d] : id= ID opt_eol ':' opt_eol fe= fact_expression[id.getText()] ;
     public PatternDescr fact_binding() throws RecognitionException {   
         PatternDescr d;
         Token id=null;
@@ -4159,21 +4200,21 @@
         		boolean multi=false;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:846:17: (id= ID opt_eol ':' opt_eol fe= fact_expression[id.getText()] )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:846:17: id= ID opt_eol ':' opt_eol fe= fact_expression[id.getText()]
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:863:17: (id= ID opt_eol ':' opt_eol fe= fact_expression[id.getText()] )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:863:17: id= ID opt_eol ':' opt_eol fe= fact_expression[id.getText()]
             {
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_fact_binding2284); 
-            following.push(FOLLOW_opt_eol_in_fact_binding2294);
+            match(input,ID,FOLLOW_ID_in_fact_binding2295); 
+            following.push(FOLLOW_opt_eol_in_fact_binding2305);
             opt_eol();
             following.pop();
 
-            match(input,33,FOLLOW_33_in_fact_binding2296); 
-            following.push(FOLLOW_opt_eol_in_fact_binding2298);
+            match(input,33,FOLLOW_33_in_fact_binding2307); 
+            following.push(FOLLOW_opt_eol_in_fact_binding2309);
             opt_eol();
             following.pop();
 
-            following.push(FOLLOW_fact_expression_in_fact_binding2302);
+            following.push(FOLLOW_fact_expression_in_fact_binding2313);
             fe=fact_expression(id.getText());
             following.pop();
 
@@ -4196,7 +4237,7 @@
 
 
     // $ANTLR start fact_expression
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:854:2: fact_expression[String id] returns [PatternDescr pd] : ( '(' opt_eol fe= fact_expression[id] opt_eol ')' | f= fact opt_eol ( ('or'|'||') opt_eol f= fact )* );
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:871:2: fact_expression[String id] returns [PatternDescr pd] : ( '(' opt_eol fe= fact_expression[id] opt_eol ')' | f= fact opt_eol ( ('or'|'||') opt_eol f= fact )* );
     public PatternDescr fact_expression(String id) throws RecognitionException {   
         PatternDescr pd;
         PatternDescr fe = null;
@@ -4209,51 +4250,51 @@
          		boolean multi = false;
          	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:859:17: ( '(' opt_eol fe= fact_expression[id] opt_eol ')' | f= fact opt_eol ( ('or'|'||') opt_eol f= fact )* )
-            int alt59=2;
-            int LA59_0 = input.LA(1);
-            if ( LA59_0==23 ) {
-                alt59=1;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:876:17: ( '(' opt_eol fe= fact_expression[id] opt_eol ')' | f= fact opt_eol ( ('or'|'||') opt_eol f= fact )* )
+            int alt60=2;
+            int LA60_0 = input.LA(1);
+            if ( LA60_0==23 ) {
+                alt60=1;
             }
-            else if ( LA59_0==ID ) {
-                alt59=2;
+            else if ( LA60_0==ID ) {
+                alt60=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("854:2: fact_expression[String id] returns [PatternDescr pd] : ( \'(\' opt_eol fe= fact_expression[id] opt_eol \')\' | f= fact opt_eol ( (\'or\'|\'||\') opt_eol f= fact )* );", 59, 0, input);
+                    new NoViableAltException("871:2: fact_expression[String id] returns [PatternDescr pd] : ( \'(\' opt_eol fe= fact_expression[id] opt_eol \')\' | f= fact opt_eol ( (\'or\'|\'||\') opt_eol f= fact )* );", 60, 0, input);
 
                 throw nvae;
             }
-            switch (alt59) {
+            switch (alt60) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:859:17: '(' opt_eol fe= fact_expression[id] opt_eol ')'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:876:17: '(' opt_eol fe= fact_expression[id] opt_eol ')'
                     {
-                    match(input,23,FOLLOW_23_in_fact_expression2334); 
-                    following.push(FOLLOW_opt_eol_in_fact_expression2336);
+                    match(input,23,FOLLOW_23_in_fact_expression2345); 
+                    following.push(FOLLOW_opt_eol_in_fact_expression2347);
                     opt_eol();
                     following.pop();
 
-                    following.push(FOLLOW_fact_expression_in_fact_expression2340);
+                    following.push(FOLLOW_fact_expression_in_fact_expression2351);
                     fe=fact_expression(id);
                     following.pop();
 
-                    following.push(FOLLOW_opt_eol_in_fact_expression2342);
+                    following.push(FOLLOW_opt_eol_in_fact_expression2353);
                     opt_eol();
                     following.pop();
 
-                    match(input,25,FOLLOW_25_in_fact_expression2344); 
+                    match(input,25,FOLLOW_25_in_fact_expression2355); 
                      pd=fe; 
 
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:860:17: f= fact opt_eol ( ('or'|'||') opt_eol f= fact )*
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:877:17: f= fact opt_eol ( ('or'|'||') opt_eol f= fact )*
                     {
-                    following.push(FOLLOW_fact_in_fact_expression2355);
+                    following.push(FOLLOW_fact_in_fact_expression2366);
                     f=fact();
                     following.pop();
 
-                    following.push(FOLLOW_opt_eol_in_fact_expression2357);
+                    following.push(FOLLOW_opt_eol_in_fact_expression2368);
                     opt_eol();
                     following.pop();
 
@@ -4261,19 +4302,19 @@
                      			((ColumnDescr)f).setIdentifier( id );
                      			pd = f;
                      		
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:865:17: ( ('or'|'||') opt_eol f= fact )*
-                    loop58:
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:882:17: ( ('or'|'||') opt_eol f= fact )*
+                    loop59:
                     do {
-                        int alt58=2;
-                        int LA58_0 = input.LA(1);
-                        if ( (LA58_0>=47 && LA58_0<=48) ) {
-                            alt58=1;
+                        int alt59=2;
+                        int LA59_0 = input.LA(1);
+                        if ( (LA59_0>=47 && LA59_0<=48) ) {
+                            alt59=1;
                         }
 
 
-                        switch (alt58) {
+                        switch (alt59) {
                     	case 1 :
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:865:25: ('or'|'||') opt_eol f= fact
+                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:882:25: ('or'|'||') opt_eol f= fact
                     	    {
                     	    if ( (input.LA(1)>=47 && input.LA(1)<=48) ) {
                     	        input.consume();
@@ -4282,10 +4323,10 @@
                     	    else {
                     	        MismatchedSetException mse =
                     	            new MismatchedSetException(null,input);
-                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_fact_expression2370);    throw mse;
+                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_fact_expression2381);    throw mse;
                     	    }
 
-                    	    following.push(FOLLOW_opt_eol_in_fact_expression2375);
+                    	    following.push(FOLLOW_opt_eol_in_fact_expression2386);
                     	    opt_eol();
                     	    following.pop();
 
@@ -4296,7 +4337,7 @@
                     	     					multi=true;
                     	     				}
                     	     			
-                    	    following.push(FOLLOW_fact_in_fact_expression2389);
+                    	    following.push(FOLLOW_fact_in_fact_expression2400);
                     	    f=fact();
                     	    following.pop();
 
@@ -4309,7 +4350,7 @@
                     	    break;
 
                     	default :
-                    	    break loop58;
+                    	    break loop59;
                         }
                     } while (true);
 
@@ -4331,7 +4372,7 @@
 
 
     // $ANTLR start fact
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:881:1: fact returns [PatternDescr d] : id= dotted_name opt_eol loc= '(' opt_eol (c= constraints )? opt_eol endLoc= ')' opt_eol ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:898:1: fact returns [PatternDescr d] : id= dotted_name opt_eol loc= '(' opt_eol (c= constraints )? opt_eol endLoc= ')' opt_eol ;
     public PatternDescr fact() throws RecognitionException {   
         PatternDescr d;
         Token loc=null;
@@ -4345,37 +4386,37 @@
         		d=null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:885:17: (id= dotted_name opt_eol loc= '(' opt_eol (c= constraints )? opt_eol endLoc= ')' opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:885:17: id= dotted_name opt_eol loc= '(' opt_eol (c= constraints )? opt_eol endLoc= ')' opt_eol
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:902:17: (id= dotted_name opt_eol loc= '(' opt_eol (c= constraints )? opt_eol endLoc= ')' opt_eol )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:902:17: id= dotted_name opt_eol loc= '(' opt_eol (c= constraints )? opt_eol endLoc= ')' opt_eol
             {
-            following.push(FOLLOW_dotted_name_in_fact2428);
+            following.push(FOLLOW_dotted_name_in_fact2439);
             id=dotted_name();
             following.pop();
 
              
              			d = new ColumnDescr( id ); 
              		
-            following.push(FOLLOW_opt_eol_in_fact2436);
+            following.push(FOLLOW_opt_eol_in_fact2447);
             opt_eol();
             following.pop();
 
             loc=(Token)input.LT(1);
-            match(input,23,FOLLOW_23_in_fact2444); 
+            match(input,23,FOLLOW_23_in_fact2455); 
 
              				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
              			
-            following.push(FOLLOW_opt_eol_in_fact2447);
+            following.push(FOLLOW_opt_eol_in_fact2458);
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:891:34: (c= constraints )?
-            int alt60=2;
-            alt60 = dfa60.predict(input); 
-            switch (alt60) {
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:908:34: (c= constraints )?
+            int alt61=2;
+            alt61 = dfa61.predict(input); 
+            switch (alt61) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:891:41: c= constraints
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:908:41: c= constraints
                     {
-                    following.push(FOLLOW_constraints_in_fact2453);
+                    following.push(FOLLOW_constraints_in_fact2464);
                     c=constraints();
                     following.pop();
 
@@ -4390,13 +4431,13 @@
 
             }
 
-            following.push(FOLLOW_opt_eol_in_fact2472);
+            following.push(FOLLOW_opt_eol_in_fact2483);
             opt_eol();
             following.pop();
 
             endLoc=(Token)input.LT(1);
-            match(input,25,FOLLOW_25_in_fact2476); 
-            following.push(FOLLOW_opt_eol_in_fact2478);
+            match(input,25,FOLLOW_25_in_fact2487); 
+            following.push(FOLLOW_opt_eol_in_fact2489);
             opt_eol();
             following.pop();
 
@@ -4419,76 +4460,76 @@
 
 
     // $ANTLR start constraints
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:905:1: constraints returns [List constraints] : opt_eol ( constraint[constraints] | predicate[constraints] ) ( opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] ) )* opt_eol ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:922:1: constraints returns [List constraints] : opt_eol ( constraint[constraints] | predicate[constraints] ) ( opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] ) )* opt_eol ;
     public List constraints() throws RecognitionException {   
         List constraints;
 
         		constraints = new ArrayList();
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:909:17: ( opt_eol ( constraint[constraints] | predicate[constraints] ) ( opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] ) )* opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:909:17: opt_eol ( constraint[constraints] | predicate[constraints] ) ( opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] ) )* opt_eol
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:926:17: ( opt_eol ( constraint[constraints] | predicate[constraints] ) ( opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] ) )* opt_eol )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:926:17: opt_eol ( constraint[constraints] | predicate[constraints] ) ( opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] ) )* opt_eol
             {
-            following.push(FOLLOW_opt_eol_in_constraints2510);
+            following.push(FOLLOW_opt_eol_in_constraints2521);
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:910:17: ( constraint[constraints] | predicate[constraints] )
-            int alt61=2;
-            int LA61_0 = input.LA(1);
-            if ( LA61_0==EOL||LA61_0==15 ) {
-                alt61=1;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:927:17: ( constraint[constraints] | predicate[constraints] )
+            int alt62=2;
+            int LA62_0 = input.LA(1);
+            if ( LA62_0==EOL||LA62_0==15 ) {
+                alt62=1;
             }
-            else if ( LA61_0==ID ) {
-                int LA61_2 = input.LA(2);
-                if ( LA61_2==33 ) {
-                    int LA61_3 = input.LA(3);
-                    if ( LA61_3==ID ) {
-                        int LA61_17 = input.LA(4);
-                        if ( LA61_17==51 ) {
-                            alt61=2;
+            else if ( LA62_0==ID ) {
+                int LA62_2 = input.LA(2);
+                if ( LA62_2==33 ) {
+                    int LA62_3 = input.LA(3);
+                    if ( LA62_3==ID ) {
+                        int LA62_17 = input.LA(4);
+                        if ( LA62_17==51 ) {
+                            alt62=2;
                         }
-                        else if ( LA61_17==EOL||LA61_17==15||(LA61_17>=24 && LA61_17<=25)||(LA61_17>=58 && LA61_17<=67) ) {
-                            alt61=1;
+                        else if ( LA62_17==EOL||LA62_17==15||(LA62_17>=24 && LA62_17<=25)||(LA62_17>=58 && LA62_17<=67) ) {
+                            alt62=1;
                         }
                         else {
                             NoViableAltException nvae =
-                                new NoViableAltException("910:17: ( constraint[constraints] | predicate[constraints] )", 61, 17, input);
+                                new NoViableAltException("927:17: ( constraint[constraints] | predicate[constraints] )", 62, 17, input);
 
                             throw nvae;
                         }
                     }
-                    else if ( LA61_3==EOL||LA61_3==15 ) {
-                        alt61=1;
+                    else if ( LA62_3==EOL||LA62_3==15 ) {
+                        alt62=1;
                     }
                     else {
                         NoViableAltException nvae =
-                            new NoViableAltException("910:17: ( constraint[constraints] | predicate[constraints] )", 61, 3, input);
+                            new NoViableAltException("927:17: ( constraint[constraints] | predicate[constraints] )", 62, 3, input);
 
                         throw nvae;
                     }
                 }
-                else if ( LA61_2==EOL||LA61_2==15||(LA61_2>=24 && LA61_2<=25)||(LA61_2>=58 && LA61_2<=67) ) {
-                    alt61=1;
+                else if ( LA62_2==EOL||LA62_2==15||(LA62_2>=24 && LA62_2<=25)||(LA62_2>=58 && LA62_2<=67) ) {
+                    alt62=1;
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("910:17: ( constraint[constraints] | predicate[constraints] )", 61, 2, input);
+                        new NoViableAltException("927:17: ( constraint[constraints] | predicate[constraints] )", 62, 2, input);
 
                     throw nvae;
                 }
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("910:17: ( constraint[constraints] | predicate[constraints] )", 61, 0, input);
+                    new NoViableAltException("927:17: ( constraint[constraints] | predicate[constraints] )", 62, 0, input);
 
                 throw nvae;
             }
-            switch (alt61) {
+            switch (alt62) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:910:18: constraint[constraints]
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:927:18: constraint[constraints]
                     {
-                    following.push(FOLLOW_constraint_in_constraints2515);
+                    following.push(FOLLOW_constraint_in_constraints2526);
                     constraint(constraints);
                     following.pop();
 
@@ -4496,9 +4537,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:910:42: predicate[constraints]
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:927:42: predicate[constraints]
                     {
-                    following.push(FOLLOW_predicate_in_constraints2518);
+                    following.push(FOLLOW_predicate_in_constraints2529);
                     predicate(constraints);
                     following.pop();
 
@@ -4508,80 +4549,80 @@
 
             }
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:911:17: ( opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] ) )*
-            loop63:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:928:17: ( opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] ) )*
+            loop64:
             do {
-                int alt63=2;
-                alt63 = dfa63.predict(input); 
-                switch (alt63) {
+                int alt64=2;
+                alt64 = dfa64.predict(input); 
+                switch (alt64) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:911:19: opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] )
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:928:19: opt_eol ',' opt_eol ( constraint[constraints] | predicate[constraints] )
             	    {
-            	    following.push(FOLLOW_opt_eol_in_constraints2526);
+            	    following.push(FOLLOW_opt_eol_in_constraints2537);
             	    opt_eol();
             	    following.pop();
 
-            	    match(input,24,FOLLOW_24_in_constraints2528); 
-            	    following.push(FOLLOW_opt_eol_in_constraints2530);
+            	    match(input,24,FOLLOW_24_in_constraints2539); 
+            	    following.push(FOLLOW_opt_eol_in_constraints2541);
             	    opt_eol();
             	    following.pop();
 
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:911:39: ( constraint[constraints] | predicate[constraints] )
-            	    int alt62=2;
-            	    int LA62_0 = input.LA(1);
-            	    if ( LA62_0==EOL||LA62_0==15 ) {
-            	        alt62=1;
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:928:39: ( constraint[constraints] | predicate[constraints] )
+            	    int alt63=2;
+            	    int LA63_0 = input.LA(1);
+            	    if ( LA63_0==EOL||LA63_0==15 ) {
+            	        alt63=1;
             	    }
-            	    else if ( LA62_0==ID ) {
-            	        int LA62_2 = input.LA(2);
-            	        if ( LA62_2==33 ) {
-            	            int LA62_3 = input.LA(3);
-            	            if ( LA62_3==ID ) {
-            	                int LA62_17 = input.LA(4);
-            	                if ( LA62_17==51 ) {
-            	                    alt62=2;
+            	    else if ( LA63_0==ID ) {
+            	        int LA63_2 = input.LA(2);
+            	        if ( LA63_2==33 ) {
+            	            int LA63_3 = input.LA(3);
+            	            if ( LA63_3==ID ) {
+            	                int LA63_17 = input.LA(4);
+            	                if ( LA63_17==51 ) {
+            	                    alt63=2;
             	                }
-            	                else if ( LA62_17==EOL||LA62_17==15||(LA62_17>=24 && LA62_17<=25)||(LA62_17>=58 && LA62_17<=67) ) {
-            	                    alt62=1;
+            	                else if ( LA63_17==EOL||LA63_17==15||(LA63_17>=24 && LA63_17<=25)||(LA63_17>=58 && LA63_17<=67) ) {
+            	                    alt63=1;
             	                }
             	                else {
             	                    NoViableAltException nvae =
-            	                        new NoViableAltException("911:39: ( constraint[constraints] | predicate[constraints] )", 62, 17, input);
+            	                        new NoViableAltException("928:39: ( constraint[constraints] | predicate[constraints] )", 63, 17, input);
 
             	                    throw nvae;
             	                }
             	            }
-            	            else if ( LA62_3==EOL||LA62_3==15 ) {
-            	                alt62=1;
+            	            else if ( LA63_3==EOL||LA63_3==15 ) {
+            	                alt63=1;
             	            }
             	            else {
             	                NoViableAltException nvae =
-            	                    new NoViableAltException("911:39: ( constraint[constraints] | predicate[constraints] )", 62, 3, input);
+            	                    new NoViableAltException("928:39: ( constraint[constraints] | predicate[constraints] )", 63, 3, input);
 
             	                throw nvae;
             	            }
             	        }
-            	        else if ( LA62_2==EOL||LA62_2==15||(LA62_2>=24 && LA62_2<=25)||(LA62_2>=58 && LA62_2<=67) ) {
-            	            alt62=1;
+            	        else if ( LA63_2==EOL||LA63_2==15||(LA63_2>=24 && LA63_2<=25)||(LA63_2>=58 && LA63_2<=67) ) {
+            	            alt63=1;
             	        }
             	        else {
             	            NoViableAltException nvae =
-            	                new NoViableAltException("911:39: ( constraint[constraints] | predicate[constraints] )", 62, 2, input);
+            	                new NoViableAltException("928:39: ( constraint[constraints] | predicate[constraints] )", 63, 2, input);
 
             	            throw nvae;
             	        }
             	    }
             	    else {
             	        NoViableAltException nvae =
-            	            new NoViableAltException("911:39: ( constraint[constraints] | predicate[constraints] )", 62, 0, input);
+            	            new NoViableAltException("928:39: ( constraint[constraints] | predicate[constraints] )", 63, 0, input);
 
             	        throw nvae;
             	    }
-            	    switch (alt62) {
+            	    switch (alt63) {
             	        case 1 :
-            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:911:40: constraint[constraints]
+            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:928:40: constraint[constraints]
             	            {
-            	            following.push(FOLLOW_constraint_in_constraints2533);
+            	            following.push(FOLLOW_constraint_in_constraints2544);
             	            constraint(constraints);
             	            following.pop();
 
@@ -4589,9 +4630,9 @@
             	            }
             	            break;
             	        case 2 :
-            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:911:64: predicate[constraints]
+            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:928:64: predicate[constraints]
             	            {
-            	            following.push(FOLLOW_predicate_in_constraints2536);
+            	            following.push(FOLLOW_predicate_in_constraints2547);
             	            predicate(constraints);
             	            following.pop();
 
@@ -4606,11 +4647,11 @@
             	    break;
 
             	default :
-            	    break loop63;
+            	    break loop64;
                 }
             } while (true);
 
-            following.push(FOLLOW_opt_eol_in_constraints2544);
+            following.push(FOLLOW_opt_eol_in_constraints2555);
             opt_eol();
             following.pop();
 
@@ -4630,7 +4671,7 @@
 
 
     // $ANTLR start constraint
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:915:1: constraint[List constraints] : opt_eol (fb= ID opt_eol ':' opt_eol )? f= ID opt_eol (op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )* )? opt_eol ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:932:1: constraint[List constraints] : opt_eol (fb= ID opt_eol ':' opt_eol )? f= ID opt_eol (op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )* )? opt_eol ;
     public void constraint(List constraints) throws RecognitionException {   
         Token fb=null;
         Token f=null;
@@ -4647,28 +4688,28 @@
         		PatternDescr d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:919:17: ( opt_eol (fb= ID opt_eol ':' opt_eol )? f= ID opt_eol (op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )* )? opt_eol )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:919:17: opt_eol (fb= ID opt_eol ':' opt_eol )? f= ID opt_eol (op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )* )? opt_eol
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:936:17: ( opt_eol (fb= ID opt_eol ':' opt_eol )? f= ID opt_eol (op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )* )? opt_eol )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:936:17: opt_eol (fb= ID opt_eol ':' opt_eol )? f= ID opt_eol (op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )* )? opt_eol
             {
-            following.push(FOLLOW_opt_eol_in_constraint2563);
+            following.push(FOLLOW_opt_eol_in_constraint2574);
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:920:17: (fb= ID opt_eol ':' opt_eol )?
-            int alt64=2;
-            alt64 = dfa64.predict(input); 
-            switch (alt64) {
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:937:17: (fb= ID opt_eol ':' opt_eol )?
+            int alt65=2;
+            alt65 = dfa65.predict(input); 
+            switch (alt65) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:920:19: fb= ID opt_eol ':' opt_eol
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:937:19: fb= ID opt_eol ':' opt_eol
                     {
                     fb=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_constraint2571); 
-                    following.push(FOLLOW_opt_eol_in_constraint2573);
+                    match(input,ID,FOLLOW_ID_in_constraint2582); 
+                    following.push(FOLLOW_opt_eol_in_constraint2584);
                     opt_eol();
                     following.pop();
 
-                    match(input,33,FOLLOW_33_in_constraint2575); 
-                    following.push(FOLLOW_opt_eol_in_constraint2577);
+                    match(input,33,FOLLOW_33_in_constraint2586); 
+                    following.push(FOLLOW_opt_eol_in_constraint2588);
                     opt_eol();
                     following.pop();
 
@@ -4679,7 +4720,7 @@
             }
 
             f=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_constraint2587); 
+            match(input,ID,FOLLOW_ID_in_constraint2598); 
 
 
             			if ( fb != null ) {
@@ -4696,51 +4737,51 @@
             									
             			
             		
-            following.push(FOLLOW_opt_eol_in_constraint2601);
+            following.push(FOLLOW_opt_eol_in_constraint2612);
             opt_eol();
             following.pop();
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:938:33: (op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )* )?
-            int alt68=2;
-            int LA68_0 = input.LA(1);
-            if ( (LA68_0>=58 && LA68_0<=67) ) {
-                alt68=1;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:955:33: (op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )* )?
+            int alt69=2;
+            int LA69_0 = input.LA(1);
+            if ( (LA69_0>=58 && LA69_0<=67) ) {
+                alt69=1;
             }
-            else if ( LA68_0==EOL||LA68_0==15||(LA68_0>=24 && LA68_0<=25) ) {
-                alt68=2;
+            else if ( LA69_0==EOL||LA69_0==15||(LA69_0>=24 && LA69_0<=25) ) {
+                alt69=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("938:33: (op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= (\'&\'|\'|\')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )* )?", 68, 0, input);
+                    new NoViableAltException("955:33: (op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= (\'&\'|\'|\')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )* )?", 69, 0, input);
 
                 throw nvae;
             }
-            switch (alt68) {
+            switch (alt69) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:938:41: op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )*
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:955:41: op= operator opt_eol (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )*
                     {
-                    following.push(FOLLOW_operator_in_constraint2607);
+                    following.push(FOLLOW_operator_in_constraint2618);
                     op=operator();
                     following.pop();
 
-                    following.push(FOLLOW_opt_eol_in_constraint2609);
+                    following.push(FOLLOW_opt_eol_in_constraint2620);
                     opt_eol();
                     following.pop();
 
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:940:41: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
-                    int alt65=4;
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:957:41: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
+                    int alt66=4;
                     switch ( input.LA(1) ) {
                     case ID:
-                        int LA65_1 = input.LA(2);
-                        if ( LA65_1==19 ) {
-                            alt65=2;
+                        int LA66_1 = input.LA(2);
+                        if ( LA66_1==19 ) {
+                            alt66=2;
                         }
-                        else if ( LA65_1==EOL||LA65_1==15||(LA65_1>=24 && LA65_1<=25)||(LA65_1>=49 && LA65_1<=50) ) {
-                            alt65=1;
+                        else if ( LA66_1==EOL||LA66_1==15||(LA66_1>=24 && LA66_1<=25)||(LA66_1>=49 && LA66_1<=50) ) {
+                            alt66=1;
                         }
                         else {
                             NoViableAltException nvae =
-                                new NoViableAltException("940:41: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 65, 1, input);
+                                new NoViableAltException("957:41: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 66, 1, input);
 
                             throw nvae;
                         }
@@ -4750,24 +4791,24 @@
                     case STRING:
                     case FLOAT:
                     case 43:
-                        alt65=3;
+                        alt66=3;
                         break;
                     case 23:
-                        alt65=4;
+                        alt66=4;
                         break;
                     default:
                         NoViableAltException nvae =
-                            new NoViableAltException("940:41: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 65, 0, input);
+                            new NoViableAltException("957:41: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 66, 0, input);
 
                         throw nvae;
                     }
 
-                    switch (alt65) {
+                    switch (alt66) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:940:49: bvc= ID
+                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:957:49: bvc= ID
                             {
                             bvc=(Token)input.LT(1);
-                            match(input,ID,FOLLOW_ID_in_constraint2627); 
+                            match(input,ID,FOLLOW_ID_in_constraint2638); 
 
                             							
                             														
@@ -4781,9 +4822,9 @@
                             }
                             break;
                         case 2 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:951:49: lc= enum_constraint
+                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:968:49: lc= enum_constraint
                             {
-                            following.push(FOLLOW_enum_constraint_in_constraint2652);
+                            following.push(FOLLOW_enum_constraint_in_constraint2663);
                             lc=enum_constraint();
                             following.pop();
 
@@ -4798,9 +4839,9 @@
                             }
                             break;
                         case 3 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:960:49: lc= literal_constraint
+                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:977:49: lc= literal_constraint
                             {
-                            following.push(FOLLOW_literal_constraint_in_constraint2684);
+                            following.push(FOLLOW_literal_constraint_in_constraint2695);
                             lc=literal_constraint();
                             following.pop();
 
@@ -4815,9 +4856,9 @@
                             }
                             break;
                         case 4 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:968:49: rvc= retval_constraint
+                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:985:49: rvc= retval_constraint
                             {
-                            following.push(FOLLOW_retval_constraint_in_constraint2704);
+                            following.push(FOLLOW_retval_constraint_in_constraint2715);
                             rvc=retval_constraint();
                             following.pop();
 
@@ -4836,19 +4877,19 @@
 
                     }
 
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:979:41: (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )*
-                    loop67:
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:996:41: (con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )*
+                    loop68:
                     do {
-                        int alt67=2;
-                        int LA67_0 = input.LA(1);
-                        if ( (LA67_0>=49 && LA67_0<=50) ) {
-                            alt67=1;
+                        int alt68=2;
+                        int LA68_0 = input.LA(1);
+                        if ( (LA68_0>=49 && LA68_0<=50) ) {
+                            alt68=1;
                         }
 
 
-                        switch (alt67) {
+                        switch (alt68) {
                     	case 1 :
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:980:49: con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
+                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:997:49: con= ('&'|'|')op= operator (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
                     	    {
                     	    con=(Token)input.LT(1);
                     	    if ( (input.LA(1)>=49 && input.LA(1)<=50) ) {
@@ -4858,7 +4899,7 @@
                     	    else {
                     	        MismatchedSetException mse =
                     	            new MismatchedSetException(null,input);
-                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_constraint2739);    throw mse;
+                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_constraint2750);    throw mse;
                     	    }
 
 
@@ -4868,24 +4909,24 @@
                     	    								fc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.OR));	
                     	    							}							
                     	    						
-                    	    following.push(FOLLOW_operator_in_constraint2761);
+                    	    following.push(FOLLOW_operator_in_constraint2772);
                     	    op=operator();
                     	    following.pop();
 
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:990:49: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
-                    	    int alt66=4;
+                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1007:49: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
+                    	    int alt67=4;
                     	    switch ( input.LA(1) ) {
                     	    case ID:
-                    	        int LA66_1 = input.LA(2);
-                    	        if ( LA66_1==19 ) {
-                    	            alt66=2;
+                    	        int LA67_1 = input.LA(2);
+                    	        if ( LA67_1==19 ) {
+                    	            alt67=2;
                     	        }
-                    	        else if ( LA66_1==EOL||LA66_1==15||(LA66_1>=24 && LA66_1<=25)||(LA66_1>=49 && LA66_1<=50) ) {
-                    	            alt66=1;
+                    	        else if ( LA67_1==EOL||LA67_1==15||(LA67_1>=24 && LA67_1<=25)||(LA67_1>=49 && LA67_1<=50) ) {
+                    	            alt67=1;
                     	        }
                     	        else {
                     	            NoViableAltException nvae =
-                    	                new NoViableAltException("990:49: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 66, 1, input);
+                    	                new NoViableAltException("1007:49: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 67, 1, input);
 
                     	            throw nvae;
                     	        }
@@ -4895,24 +4936,24 @@
                     	    case STRING:
                     	    case FLOAT:
                     	    case 43:
-                    	        alt66=3;
+                    	        alt67=3;
                     	        break;
                     	    case 23:
-                    	        alt66=4;
+                    	        alt67=4;
                     	        break;
                     	    default:
                     	        NoViableAltException nvae =
-                    	            new NoViableAltException("990:49: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 66, 0, input);
+                    	            new NoViableAltException("1007:49: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 67, 0, input);
 
                     	        throw nvae;
                     	    }
 
-                    	    switch (alt66) {
+                    	    switch (alt67) {
                     	        case 1 :
-                    	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:990:57: bvc= ID
+                    	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1007:57: bvc= ID
                     	            {
                     	            bvc=(Token)input.LT(1);
-                    	            match(input,ID,FOLLOW_ID_in_constraint2773); 
+                    	            match(input,ID,FOLLOW_ID_in_constraint2784); 
 
                     	            								VariableRestrictionDescr vd = new VariableRestrictionDescr(op, bvc.getText());
                     	            								fc.addRestriction(vd);
@@ -4921,9 +4962,9 @@
                     	            }
                     	            break;
                     	        case 2 :
-                    	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:996:57: lc= enum_constraint
+                    	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1013:57: lc= enum_constraint
                     	            {
-                    	            following.push(FOLLOW_enum_constraint_in_constraint2801);
+                    	            following.push(FOLLOW_enum_constraint_in_constraint2812);
                     	            lc=enum_constraint();
                     	            following.pop();
 
@@ -4936,9 +4977,9 @@
                     	            }
                     	            break;
                     	        case 3 :
-                    	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1003:57: lc= literal_constraint
+                    	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1020:57: lc= literal_constraint
                     	            {
-                    	            following.push(FOLLOW_literal_constraint_in_constraint2836);
+                    	            following.push(FOLLOW_literal_constraint_in_constraint2847);
                     	            lc=literal_constraint();
                     	            following.pop();
 
@@ -4951,9 +4992,9 @@
                     	            }
                     	            break;
                     	        case 4 :
-                    	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1009:57: rvc= retval_constraint
+                    	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1026:57: rvc= retval_constraint
                     	            {
-                    	            following.push(FOLLOW_retval_constraint_in_constraint2858);
+                    	            following.push(FOLLOW_retval_constraint_in_constraint2869);
                     	            rvc=retval_constraint();
                     	            following.pop();
 
@@ -4973,7 +5014,7 @@
                     	    break;
 
                     	default :
-                    	    break loop67;
+                    	    break loop68;
                         }
                     } while (true);
 
@@ -4983,7 +5024,7 @@
 
             }
 
-            following.push(FOLLOW_opt_eol_in_constraint2914);
+            following.push(FOLLOW_opt_eol_in_constraint2925);
             opt_eol();
             following.pop();
 
@@ -5003,7 +5044,7 @@
 
 
     // $ANTLR start literal_constraint
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1022:1: literal_constraint returns [String text] : (t= STRING | t= INT | t= FLOAT | t= BOOL | t= 'null' ) ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1039:1: literal_constraint returns [String text] : (t= STRING | t= INT | t= FLOAT | t= BOOL | t= 'null' ) ;
     public String literal_constraint() throws RecognitionException {   
         String text;
         Token t=null;
@@ -5012,76 +5053,76 @@
         		text = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1026:17: ( (t= STRING | t= INT | t= FLOAT | t= BOOL | t= 'null' ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1026:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= 'null' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1043:17: ( (t= STRING | t= INT | t= FLOAT | t= BOOL | t= 'null' ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1043:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= 'null' )
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1026:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= 'null' )
-            int alt69=5;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1043:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= 'null' )
+            int alt70=5;
             switch ( input.LA(1) ) {
             case STRING:
-                alt69=1;
+                alt70=1;
                 break;
             case INT:
-                alt69=2;
+                alt70=2;
                 break;
             case FLOAT:
-                alt69=3;
+                alt70=3;
                 break;
             case BOOL:
-                alt69=4;
+                alt70=4;
                 break;
             case 43:
-                alt69=5;
+                alt70=5;
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1026:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= \'null\' )", 69, 0, input);
+                    new NoViableAltException("1043:17: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= \'null\' )", 70, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt69) {
+            switch (alt70) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1026:25: t= STRING
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1043:25: t= STRING
                     {
                     t=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_literal_constraint2941); 
+                    match(input,STRING,FOLLOW_STRING_in_literal_constraint2952); 
                      text = getString( t ); 
 
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1027:25: t= INT
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1044:25: t= INT
                     {
                     t=(Token)input.LT(1);
-                    match(input,INT,FOLLOW_INT_in_literal_constraint2952); 
+                    match(input,INT,FOLLOW_INT_in_literal_constraint2963); 
                      text = t.getText(); 
 
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1028:25: t= FLOAT
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1045:25: t= FLOAT
                     {
                     t=(Token)input.LT(1);
-                    match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint2965); 
+                    match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint2976); 
                      text = t.getText(); 
 
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1029:25: t= BOOL
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1046:25: t= BOOL
                     {
                     t=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_literal_constraint2976); 
+                    match(input,BOOL,FOLLOW_BOOL_in_literal_constraint2987); 
                      text = t.getText(); 
 
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1030:25: t= 'null'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1047:25: t= 'null'
                     {
                     t=(Token)input.LT(1);
-                    match(input,43,FOLLOW_43_in_literal_constraint2988); 
+                    match(input,43,FOLLOW_43_in_literal_constraint2999); 
                      text = null; 
 
                     }
@@ -5105,7 +5146,7 @@
 
 
     // $ANTLR start enum_constraint
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1034:1: enum_constraint returns [String text] : (cls= ID '.' en= ID ) ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1051:1: enum_constraint returns [String text] : (cls= ID '.' en= ID ) ;
     public String enum_constraint() throws RecognitionException {   
         String text;
         Token cls=null;
@@ -5115,17 +5156,17 @@
         		text = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1038:17: ( (cls= ID '.' en= ID ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1038:17: (cls= ID '.' en= ID )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1055:17: ( (cls= ID '.' en= ID ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1055:17: (cls= ID '.' en= ID )
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1038:17: (cls= ID '.' en= ID )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1038:18: cls= ID '.' en= ID
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1055:17: (cls= ID '.' en= ID )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1055:18: cls= ID '.' en= ID
             {
             cls=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_enum_constraint3019); 
-            match(input,19,FOLLOW_19_in_enum_constraint3021); 
+            match(input,ID,FOLLOW_ID_in_enum_constraint3030); 
+            match(input,19,FOLLOW_19_in_enum_constraint3032); 
             en=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_enum_constraint3025); 
+            match(input,ID,FOLLOW_ID_in_enum_constraint3036); 
 
             }
 
@@ -5146,7 +5187,7 @@
 
 
     // $ANTLR start retval_constraint
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1041:1: retval_constraint returns [String text] : '(' c= paren_chunk ')' ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1058:1: retval_constraint returns [String text] : '(' c= paren_chunk ')' ;
     public String retval_constraint() throws RecognitionException {   
         String text;
         String c = null;
@@ -5156,15 +5197,15 @@
         		text = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1046:17: ( '(' c= paren_chunk ')' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1046:17: '(' c= paren_chunk ')'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1063:17: ( '(' c= paren_chunk ')' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1063:17: '(' c= paren_chunk ')'
             {
-            match(input,23,FOLLOW_23_in_retval_constraint3054); 
-            following.push(FOLLOW_paren_chunk_in_retval_constraint3059);
+            match(input,23,FOLLOW_23_in_retval_constraint3065); 
+            following.push(FOLLOW_paren_chunk_in_retval_constraint3070);
             c=paren_chunk();
             following.pop();
 
-            match(input,25,FOLLOW_25_in_retval_constraint3062); 
+            match(input,25,FOLLOW_25_in_retval_constraint3073); 
              text = c; 
 
             }
@@ -5182,7 +5223,7 @@
 
 
     // $ANTLR start predicate
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1049:1: predicate[List constraints] : decl= ID ':' field= ID '->' '(' text= paren_chunk ')' ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1066:1: predicate[List constraints] : decl= ID ':' field= ID '->' '(' text= paren_chunk ')' ;
     public void predicate(List constraints) throws RecognitionException {   
         Token decl=null;
         Token field=null;
@@ -5190,21 +5231,21 @@
 
 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1051:17: (decl= ID ':' field= ID '->' '(' text= paren_chunk ')' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1051:17: decl= ID ':' field= ID '->' '(' text= paren_chunk ')'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1068:17: (decl= ID ':' field= ID '->' '(' text= paren_chunk ')' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1068:17: decl= ID ':' field= ID '->' '(' text= paren_chunk ')'
             {
             decl=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_predicate3080); 
-            match(input,33,FOLLOW_33_in_predicate3082); 
+            match(input,ID,FOLLOW_ID_in_predicate3091); 
+            match(input,33,FOLLOW_33_in_predicate3093); 
             field=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_predicate3086); 
-            match(input,51,FOLLOW_51_in_predicate3088); 
-            match(input,23,FOLLOW_23_in_predicate3090); 
-            following.push(FOLLOW_paren_chunk_in_predicate3094);
+            match(input,ID,FOLLOW_ID_in_predicate3097); 
+            match(input,51,FOLLOW_51_in_predicate3099); 
+            match(input,23,FOLLOW_23_in_predicate3101); 
+            following.push(FOLLOW_paren_chunk_in_predicate3105);
             text=paren_chunk();
             following.pop();
 
-            match(input,25,FOLLOW_25_in_predicate3096); 
+            match(input,25,FOLLOW_25_in_predicate3107); 
 
             			PredicateDescr d = new PredicateDescr(field.getText(), decl.getText(), text );
             			constraints.add( d );
@@ -5225,7 +5266,7 @@
 
 
     // $ANTLR start paren_chunk
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1058:1: paren_chunk returns [String text] : ( options {greedy=false; } : '(' c= paren_chunk ')' | any= . )* ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1075:1: paren_chunk returns [String text] : ( options {greedy=false; } : '(' c= paren_chunk ')' | any= . )* ;
     public String paren_chunk() throws RecognitionException {   
         String text;
         Token any=null;
@@ -5236,22 +5277,22 @@
         		text = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1064:18: ( ( options {greedy=false; } : '(' c= paren_chunk ')' | any= . )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1064:18: ( options {greedy=false; } : '(' c= paren_chunk ')' | any= . )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1081:18: ( ( options {greedy=false; } : '(' c= paren_chunk ')' | any= . )* )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1081:18: ( options {greedy=false; } : '(' c= paren_chunk ')' | any= . )*
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1064:18: ( options {greedy=false; } : '(' c= paren_chunk ')' | any= . )*
-            loop70:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1081:18: ( options {greedy=false; } : '(' c= paren_chunk ')' | any= . )*
+            loop71:
             do {
-                int alt70=3;
+                int alt71=3;
                 switch ( input.LA(1) ) {
                 case EOL:
-                    alt70=3;
+                    alt71=3;
                     break;
                 case 25:
-                    alt70=3;
+                    alt71=3;
                     break;
                 case 23:
-                    alt70=1;
+                    alt71=1;
                     break;
                 case ID:
                 case INT:
@@ -5314,21 +5355,21 @@
                 case 65:
                 case 66:
                 case 67:
-                    alt70=2;
+                    alt71=2;
                     break;
 
                 }
 
-                switch (alt70) {
+                switch (alt71) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1065:25: '(' c= paren_chunk ')'
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1082:25: '(' c= paren_chunk ')'
             	    {
-            	    match(input,23,FOLLOW_23_in_paren_chunk3142); 
-            	    following.push(FOLLOW_paren_chunk_in_paren_chunk3146);
+            	    match(input,23,FOLLOW_23_in_paren_chunk3153); 
+            	    following.push(FOLLOW_paren_chunk_in_paren_chunk3157);
             	    c=paren_chunk();
             	    following.pop();
 
-            	    match(input,25,FOLLOW_25_in_paren_chunk3148); 
+            	    match(input,25,FOLLOW_25_in_paren_chunk3159); 
 
             	    				if ( c == null ) {
             	    					c = "";
@@ -5343,7 +5384,7 @@
             	    }
             	    break;
             	case 2 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1076:19: any= .
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1093:19: any= .
             	    {
             	    any=(Token)input.LT(1);
             	    matchAny(input); 
@@ -5359,7 +5400,7 @@
             	    break;
 
             	default :
-            	    break loop70;
+            	    break loop71;
                 }
             } while (true);
 
@@ -5379,7 +5420,7 @@
 
 
     // $ANTLR start paren_chunk2
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1088:1: paren_chunk2 returns [String text] : ( options {greedy=false; } : '(' c= paren_chunk2 ')' | any= . )* ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1105:1: paren_chunk2 returns [String text] : ( options {greedy=false; } : '(' c= paren_chunk2 ')' | any= . )* ;
     public String paren_chunk2() throws RecognitionException {   
         String text;
         Token any=null;
@@ -5390,19 +5431,19 @@
         		text = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1094:18: ( ( options {greedy=false; } : '(' c= paren_chunk2 ')' | any= . )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1094:18: ( options {greedy=false; } : '(' c= paren_chunk2 ')' | any= . )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1111:18: ( ( options {greedy=false; } : '(' c= paren_chunk2 ')' | any= . )* )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1111:18: ( options {greedy=false; } : '(' c= paren_chunk2 ')' | any= . )*
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1094:18: ( options {greedy=false; } : '(' c= paren_chunk2 ')' | any= . )*
-            loop71:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1111:18: ( options {greedy=false; } : '(' c= paren_chunk2 ')' | any= . )*
+            loop72:
             do {
-                int alt71=3;
+                int alt72=3;
                 switch ( input.LA(1) ) {
                 case 25:
-                    alt71=3;
+                    alt72=3;
                     break;
                 case 23:
-                    alt71=1;
+                    alt72=1;
                     break;
                 case EOL:
                 case ID:
@@ -5466,21 +5507,21 @@
                 case 65:
                 case 66:
                 case 67:
-                    alt71=2;
+                    alt72=2;
                     break;
 
                 }
 
-                switch (alt71) {
+                switch (alt72) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1095:25: '(' c= paren_chunk2 ')'
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1112:25: '(' c= paren_chunk2 ')'
             	    {
-            	    match(input,23,FOLLOW_23_in_paren_chunk23219); 
-            	    following.push(FOLLOW_paren_chunk2_in_paren_chunk23223);
+            	    match(input,23,FOLLOW_23_in_paren_chunk23230); 
+            	    following.push(FOLLOW_paren_chunk2_in_paren_chunk23234);
             	    c=paren_chunk2();
             	    following.pop();
 
-            	    match(input,25,FOLLOW_25_in_paren_chunk23225); 
+            	    match(input,25,FOLLOW_25_in_paren_chunk23236); 
 
             	    				if ( c == null ) {
             	    					c = "";
@@ -5495,7 +5536,7 @@
             	    }
             	    break;
             	case 2 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1106:19: any= .
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1123:19: any= .
             	    {
             	    any=(Token)input.LT(1);
             	    matchAny(input); 
@@ -5511,7 +5552,7 @@
             	    break;
 
             	default :
-            	    break loop71;
+            	    break loop72;
                 }
             } while (true);
 
@@ -5531,7 +5572,7 @@
 
 
     // $ANTLR start curly_chunk
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1117:1: curly_chunk returns [String text] : ( options {greedy=false; } : '{' c= curly_chunk '}' | any= . )* ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1134:1: curly_chunk returns [String text] : ( options {greedy=false; } : '{' c= curly_chunk '}' | any= . )* ;
     public String curly_chunk() throws RecognitionException {   
         String text;
         Token any=null;
@@ -5542,19 +5583,19 @@
         		text = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1123:17: ( ( options {greedy=false; } : '{' c= curly_chunk '}' | any= . )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1123:17: ( options {greedy=false; } : '{' c= curly_chunk '}' | any= . )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1140:17: ( ( options {greedy=false; } : '{' c= curly_chunk '}' | any= . )* )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1140:17: ( options {greedy=false; } : '{' c= curly_chunk '}' | any= . )*
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1123:17: ( options {greedy=false; } : '{' c= curly_chunk '}' | any= . )*
-            loop72:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1140:17: ( options {greedy=false; } : '{' c= curly_chunk '}' | any= . )*
+            loop73:
             do {
-                int alt72=3;
+                int alt73=3;
                 switch ( input.LA(1) ) {
                 case 27:
-                    alt72=3;
+                    alt73=3;
                     break;
                 case 26:
-                    alt72=1;
+                    alt73=1;
                     break;
                 case EOL:
                 case ID:
@@ -5618,21 +5659,21 @@
                 case 65:
                 case 66:
                 case 67:
-                    alt72=2;
+                    alt73=2;
                     break;
 
                 }
 
-                switch (alt72) {
+                switch (alt73) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1124:25: '{' c= curly_chunk '}'
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1141:25: '{' c= curly_chunk '}'
             	    {
-            	    match(input,26,FOLLOW_26_in_curly_chunk3294); 
-            	    following.push(FOLLOW_curly_chunk_in_curly_chunk3298);
+            	    match(input,26,FOLLOW_26_in_curly_chunk3305); 
+            	    following.push(FOLLOW_curly_chunk_in_curly_chunk3309);
             	    c=curly_chunk();
             	    following.pop();
 
-            	    match(input,27,FOLLOW_27_in_curly_chunk3300); 
+            	    match(input,27,FOLLOW_27_in_curly_chunk3311); 
 
             	    				//System.err.println( "chunk [" + c + "]" );
             	    				if ( c == null ) {
@@ -5648,7 +5689,7 @@
             	    }
             	    break;
             	case 2 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1136:19: any= .
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1153:19: any= .
             	    {
             	    any=(Token)input.LT(1);
             	    matchAny(input); 
@@ -5665,7 +5706,7 @@
             	    break;
 
             	default :
-            	    break loop72;
+            	    break loop73;
                 }
             } while (true);
 
@@ -5685,7 +5726,7 @@
 
 
     // $ANTLR start lhs_or
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1148:1: lhs_or returns [PatternDescr d] : left= lhs_and ( ('or'|'||') opt_eol right= lhs_and )* ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1165:1: lhs_or returns [PatternDescr d] : left= lhs_and ( ('or'|'||') opt_eol right= lhs_and )* ;
     public PatternDescr lhs_or() throws RecognitionException {   
         PatternDescr d;
         PatternDescr left = null;
@@ -5697,28 +5738,28 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1153:17: (left= lhs_and ( ('or'|'||') opt_eol right= lhs_and )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1153:17: left= lhs_and ( ('or'|'||') opt_eol right= lhs_and )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1170:17: (left= lhs_and ( ('or'|'||') opt_eol right= lhs_and )* )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1170:17: left= lhs_and ( ('or'|'||') opt_eol right= lhs_and )*
             {
              OrDescr or = null; 
-            following.push(FOLLOW_lhs_and_in_lhs_or3358);
+            following.push(FOLLOW_lhs_and_in_lhs_or3369);
             left=lhs_and();
             following.pop();
 
             d = left; 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1155:17: ( ('or'|'||') opt_eol right= lhs_and )*
-            loop73:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1172:17: ( ('or'|'||') opt_eol right= lhs_and )*
+            loop74:
             do {
-                int alt73=2;
-                int LA73_0 = input.LA(1);
-                if ( (LA73_0>=47 && LA73_0<=48) ) {
-                    alt73=1;
+                int alt74=2;
+                int LA74_0 = input.LA(1);
+                if ( (LA74_0>=47 && LA74_0<=48) ) {
+                    alt74=1;
                 }
 
 
-                switch (alt73) {
+                switch (alt74) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1155:19: ('or'|'||') opt_eol right= lhs_and
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1172:19: ('or'|'||') opt_eol right= lhs_and
             	    {
             	    if ( (input.LA(1)>=47 && input.LA(1)<=48) ) {
             	        input.consume();
@@ -5727,14 +5768,14 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_or3367);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_or3378);    throw mse;
             	    }
 
-            	    following.push(FOLLOW_opt_eol_in_lhs_or3372);
+            	    following.push(FOLLOW_opt_eol_in_lhs_or3383);
             	    opt_eol();
             	    following.pop();
 
-            	    following.push(FOLLOW_lhs_and_in_lhs_or3379);
+            	    following.push(FOLLOW_lhs_and_in_lhs_or3390);
             	    right=lhs_and();
             	    following.pop();
 
@@ -5752,7 +5793,7 @@
             	    break;
 
             	default :
-            	    break loop73;
+            	    break loop74;
                 }
             } while (true);
 
@@ -5772,7 +5813,7 @@
 
 
     // $ANTLR start lhs_and
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1169:1: lhs_and returns [PatternDescr d] : left= lhs_unary ( ('and'|'&&') opt_eol right= lhs_unary )* ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1186:1: lhs_and returns [PatternDescr d] : left= lhs_unary ( ('and'|'&&') opt_eol right= lhs_unary )* ;
     public PatternDescr lhs_and() throws RecognitionException {   
         PatternDescr d;
         PatternDescr left = null;
@@ -5784,28 +5825,28 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1174:17: (left= lhs_unary ( ('and'|'&&') opt_eol right= lhs_unary )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1174:17: left= lhs_unary ( ('and'|'&&') opt_eol right= lhs_unary )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1191:17: (left= lhs_unary ( ('and'|'&&') opt_eol right= lhs_unary )* )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1191:17: left= lhs_unary ( ('and'|'&&') opt_eol right= lhs_unary )*
             {
              AndDescr and = null; 
-            following.push(FOLLOW_lhs_unary_in_lhs_and3419);
+            following.push(FOLLOW_lhs_unary_in_lhs_and3430);
             left=lhs_unary();
             following.pop();
 
              d = left; 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1176:17: ( ('and'|'&&') opt_eol right= lhs_unary )*
-            loop74:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1193:17: ( ('and'|'&&') opt_eol right= lhs_unary )*
+            loop75:
             do {
-                int alt74=2;
-                int LA74_0 = input.LA(1);
-                if ( (LA74_0>=52 && LA74_0<=53) ) {
-                    alt74=1;
+                int alt75=2;
+                int LA75_0 = input.LA(1);
+                if ( (LA75_0>=52 && LA75_0<=53) ) {
+                    alt75=1;
                 }
 
 
-                switch (alt74) {
+                switch (alt75) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1176:19: ('and'|'&&') opt_eol right= lhs_unary
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1193:19: ('and'|'&&') opt_eol right= lhs_unary
             	    {
             	    if ( (input.LA(1)>=52 && input.LA(1)<=53) ) {
             	        input.consume();
@@ -5814,14 +5855,14 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_and3428);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_and3439);    throw mse;
             	    }
 
-            	    following.push(FOLLOW_opt_eol_in_lhs_and3433);
+            	    following.push(FOLLOW_opt_eol_in_lhs_and3444);
             	    opt_eol();
             	    following.pop();
 
-            	    following.push(FOLLOW_lhs_unary_in_lhs_and3440);
+            	    following.push(FOLLOW_lhs_unary_in_lhs_and3451);
             	    right=lhs_unary();
             	    following.pop();
 
@@ -5839,7 +5880,7 @@
             	    break;
 
             	default :
-            	    break loop74;
+            	    break loop75;
                 }
             } while (true);
 
@@ -5859,7 +5900,7 @@
 
 
     // $ANTLR start lhs_unary
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1190:1: lhs_unary returns [PatternDescr d] : (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column (fm= from_statement )? | '(' opt_eol u= lhs opt_eol ')' ) ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1207:1: lhs_unary returns [PatternDescr d] : (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column (fm= from_statement )? | '(' opt_eol u= lhs opt_eol ')' ) ;
     public PatternDescr lhs_unary() throws RecognitionException {   
         PatternDescr d;
         PatternDescr u = null;
@@ -5871,39 +5912,39 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1194:17: ( (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column (fm= from_statement )? | '(' opt_eol u= lhs opt_eol ')' ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1194:17: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column (fm= from_statement )? | '(' opt_eol u= lhs opt_eol ')' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1211:17: ( (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column (fm= from_statement )? | '(' opt_eol u= lhs opt_eol ')' ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1211:17: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column (fm= from_statement )? | '(' opt_eol u= lhs opt_eol ')' )
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1194:17: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column (fm= from_statement )? | '(' opt_eol u= lhs opt_eol ')' )
-            int alt76=5;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1211:17: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column (fm= from_statement )? | '(' opt_eol u= lhs opt_eol ')' )
+            int alt77=5;
             switch ( input.LA(1) ) {
             case 54:
-                alt76=1;
+                alt77=1;
                 break;
             case 55:
-                alt76=2;
+                alt77=2;
                 break;
             case 56:
-                alt76=3;
+                alt77=3;
                 break;
             case ID:
-                alt76=4;
+                alt77=4;
                 break;
             case 23:
-                alt76=5;
+                alt77=5;
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1194:17: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column (fm= from_statement )? | \'(\' opt_eol u= lhs opt_eol \')\' )", 76, 0, input);
+                    new NoViableAltException("1211:17: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_column (fm= from_statement )? | \'(\' opt_eol u= lhs opt_eol \')\' )", 77, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt76) {
+            switch (alt77) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1194:25: u= lhs_exist
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1211:25: u= lhs_exist
                     {
-                    following.push(FOLLOW_lhs_exist_in_lhs_unary3478);
+                    following.push(FOLLOW_lhs_exist_in_lhs_unary3489);
                     u=lhs_exist();
                     following.pop();
 
@@ -5912,9 +5953,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1195:25: u= lhs_not
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1212:25: u= lhs_not
                     {
-                    following.push(FOLLOW_lhs_not_in_lhs_unary3488);
+                    following.push(FOLLOW_lhs_not_in_lhs_unary3499);
                     u=lhs_not();
                     following.pop();
 
@@ -5923,9 +5964,9 @@
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1196:25: u= lhs_eval
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1213:25: u= lhs_eval
                     {
-                    following.push(FOLLOW_lhs_eval_in_lhs_unary3498);
+                    following.push(FOLLOW_lhs_eval_in_lhs_unary3509);
                     u=lhs_eval();
                     following.pop();
 
@@ -5934,33 +5975,33 @@
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1197:25: u= lhs_column (fm= from_statement )?
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1214:25: u= lhs_column (fm= from_statement )?
                     {
-                    following.push(FOLLOW_lhs_column_in_lhs_unary3512);
+                    following.push(FOLLOW_lhs_column_in_lhs_unary3523);
                     u=lhs_column();
                     following.pop();
 
                     d=u;
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1197:45: (fm= from_statement )?
-                    int alt75=2;
-                    int LA75_0 = input.LA(1);
-                    if ( LA75_0==42 ) {
-                        alt75=1;
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1214:45: (fm= from_statement )?
+                    int alt76=2;
+                    int LA76_0 = input.LA(1);
+                    if ( LA76_0==42 ) {
+                        alt76=1;
                     }
-                    else if ( (LA75_0>=EOL && LA75_0<=ID)||LA75_0==15||LA75_0==23||LA75_0==25||LA75_0==29||LA75_0==34||(LA75_0>=47 && LA75_0<=48)||(LA75_0>=52 && LA75_0<=56) ) {
-                        alt75=2;
+                    else if ( (LA76_0>=EOL && LA76_0<=ID)||LA76_0==15||LA76_0==23||LA76_0==25||LA76_0==29||LA76_0==34||(LA76_0>=47 && LA76_0<=48)||(LA76_0>=52 && LA76_0<=56) ) {
+                        alt76=2;
                     }
                     else {
                         NoViableAltException nvae =
-                            new NoViableAltException("1197:45: (fm= from_statement )?", 75, 0, input);
+                            new NoViableAltException("1214:45: (fm= from_statement )?", 76, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt75) {
+                    switch (alt76) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1197:46: fm= from_statement
+                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1214:46: fm= from_statement
                             {
-                            following.push(FOLLOW_from_statement_in_lhs_unary3519);
+                            following.push(FOLLOW_from_statement_in_lhs_unary3530);
                             fm=from_statement();
                             following.pop();
 
@@ -5975,22 +6016,22 @@
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1198:25: '(' opt_eol u= lhs opt_eol ')'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1215:25: '(' opt_eol u= lhs opt_eol ')'
                     {
-                    match(input,23,FOLLOW_23_in_lhs_unary3529); 
-                    following.push(FOLLOW_opt_eol_in_lhs_unary3531);
+                    match(input,23,FOLLOW_23_in_lhs_unary3540); 
+                    following.push(FOLLOW_opt_eol_in_lhs_unary3542);
                     opt_eol();
                     following.pop();
 
-                    following.push(FOLLOW_lhs_in_lhs_unary3535);
+                    following.push(FOLLOW_lhs_in_lhs_unary3546);
                     u=lhs();
                     following.pop();
 
-                    following.push(FOLLOW_opt_eol_in_lhs_unary3537);
+                    following.push(FOLLOW_opt_eol_in_lhs_unary3548);
                     opt_eol();
                     following.pop();
 
-                    match(input,25,FOLLOW_25_in_lhs_unary3539); 
+                    match(input,25,FOLLOW_25_in_lhs_unary3550); 
                     d = u;
 
                     }
@@ -6014,7 +6055,7 @@
 
 
     // $ANTLR start lhs_exist
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1202:1: lhs_exist returns [PatternDescr d] : loc= 'exists' ( '(' column= lhs_column ')' | column= lhs_column ) ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1219:1: lhs_exist returns [PatternDescr d] : loc= 'exists' ( '(' column= lhs_column ')' | column= lhs_column ) ;
     public PatternDescr lhs_exist() throws RecognitionException {   
         PatternDescr d;
         Token loc=null;
@@ -6025,43 +6066,43 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1206:17: (loc= 'exists' ( '(' column= lhs_column ')' | column= lhs_column ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1206:17: loc= 'exists' ( '(' column= lhs_column ')' | column= lhs_column )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1223:17: (loc= 'exists' ( '(' column= lhs_column ')' | column= lhs_column ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1223:17: loc= 'exists' ( '(' column= lhs_column ')' | column= lhs_column )
             {
             loc=(Token)input.LT(1);
-            match(input,54,FOLLOW_54_in_lhs_exist3570); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1206:30: ( '(' column= lhs_column ')' | column= lhs_column )
-            int alt77=2;
-            int LA77_0 = input.LA(1);
-            if ( LA77_0==23 ) {
-                alt77=1;
+            match(input,54,FOLLOW_54_in_lhs_exist3581); 
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1223:30: ( '(' column= lhs_column ')' | column= lhs_column )
+            int alt78=2;
+            int LA78_0 = input.LA(1);
+            if ( LA78_0==23 ) {
+                alt78=1;
             }
-            else if ( LA77_0==ID ) {
-                alt77=2;
+            else if ( LA78_0==ID ) {
+                alt78=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1206:30: ( \'(\' column= lhs_column \')\' | column= lhs_column )", 77, 0, input);
+                    new NoViableAltException("1223:30: ( \'(\' column= lhs_column \')\' | column= lhs_column )", 78, 0, input);
 
                 throw nvae;
             }
-            switch (alt77) {
+            switch (alt78) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1206:31: '(' column= lhs_column ')'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1223:31: '(' column= lhs_column ')'
                     {
-                    match(input,23,FOLLOW_23_in_lhs_exist3573); 
-                    following.push(FOLLOW_lhs_column_in_lhs_exist3577);
+                    match(input,23,FOLLOW_23_in_lhs_exist3584); 
+                    following.push(FOLLOW_lhs_column_in_lhs_exist3588);
                     column=lhs_column();
                     following.pop();
 
-                    match(input,25,FOLLOW_25_in_lhs_exist3579); 
+                    match(input,25,FOLLOW_25_in_lhs_exist3590); 
 
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1206:59: column= lhs_column
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1223:59: column= lhs_column
                     {
-                    following.push(FOLLOW_lhs_column_in_lhs_exist3585);
+                    following.push(FOLLOW_lhs_column_in_lhs_exist3596);
                     column=lhs_column();
                     following.pop();
 
@@ -6091,7 +6132,7 @@
 
 
     // $ANTLR start lhs_not
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1213:1: lhs_not returns [NotDescr d] : loc= 'not' ( '(' column= lhs_column ')' | column= lhs_column ) ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1230:1: lhs_not returns [NotDescr d] : loc= 'not' ( '(' column= lhs_column ')' | column= lhs_column ) ;
     public NotDescr lhs_not() throws RecognitionException {   
         NotDescr d;
         Token loc=null;
@@ -6102,43 +6143,43 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1217:17: (loc= 'not' ( '(' column= lhs_column ')' | column= lhs_column ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1217:17: loc= 'not' ( '(' column= lhs_column ')' | column= lhs_column )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1234:17: (loc= 'not' ( '(' column= lhs_column ')' | column= lhs_column ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1234:17: loc= 'not' ( '(' column= lhs_column ')' | column= lhs_column )
             {
             loc=(Token)input.LT(1);
-            match(input,55,FOLLOW_55_in_lhs_not3615); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1217:27: ( '(' column= lhs_column ')' | column= lhs_column )
-            int alt78=2;
-            int LA78_0 = input.LA(1);
-            if ( LA78_0==23 ) {
-                alt78=1;
+            match(input,55,FOLLOW_55_in_lhs_not3626); 
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1234:27: ( '(' column= lhs_column ')' | column= lhs_column )
+            int alt79=2;
+            int LA79_0 = input.LA(1);
+            if ( LA79_0==23 ) {
+                alt79=1;
             }
-            else if ( LA78_0==ID ) {
-                alt78=2;
+            else if ( LA79_0==ID ) {
+                alt79=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1217:27: ( \'(\' column= lhs_column \')\' | column= lhs_column )", 78, 0, input);
+                    new NoViableAltException("1234:27: ( \'(\' column= lhs_column \')\' | column= lhs_column )", 79, 0, input);
 
                 throw nvae;
             }
-            switch (alt78) {
+            switch (alt79) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1217:28: '(' column= lhs_column ')'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1234:28: '(' column= lhs_column ')'
                     {
-                    match(input,23,FOLLOW_23_in_lhs_not3618); 
-                    following.push(FOLLOW_lhs_column_in_lhs_not3622);
+                    match(input,23,FOLLOW_23_in_lhs_not3629); 
+                    following.push(FOLLOW_lhs_column_in_lhs_not3633);
                     column=lhs_column();
                     following.pop();
 
-                    match(input,25,FOLLOW_25_in_lhs_not3625); 
+                    match(input,25,FOLLOW_25_in_lhs_not3636); 
 
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1217:57: column= lhs_column
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1234:57: column= lhs_column
                     {
-                    following.push(FOLLOW_lhs_column_in_lhs_not3631);
+                    following.push(FOLLOW_lhs_column_in_lhs_not3642);
                     column=lhs_column();
                     following.pop();
 
@@ -6168,7 +6209,7 @@
 
 
     // $ANTLR start lhs_eval
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1224:1: lhs_eval returns [PatternDescr d] : 'eval' loc= '(' c= paren_chunk2 ')' ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1241:1: lhs_eval returns [PatternDescr d] : 'eval' loc= '(' c= paren_chunk2 ')' ;
     public PatternDescr lhs_eval() throws RecognitionException {   
         PatternDescr d;
         Token loc=null;
@@ -6180,17 +6221,17 @@
         		String text = "";
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1229:17: ( 'eval' loc= '(' c= paren_chunk2 ')' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1229:17: 'eval' loc= '(' c= paren_chunk2 ')'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1246:17: ( 'eval' loc= '(' c= paren_chunk2 ')' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1246:17: 'eval' loc= '(' c= paren_chunk2 ')'
             {
-            match(input,56,FOLLOW_56_in_lhs_eval3657); 
+            match(input,56,FOLLOW_56_in_lhs_eval3668); 
             loc=(Token)input.LT(1);
-            match(input,23,FOLLOW_23_in_lhs_eval3661); 
-            following.push(FOLLOW_paren_chunk2_in_lhs_eval3669);
+            match(input,23,FOLLOW_23_in_lhs_eval3672); 
+            following.push(FOLLOW_paren_chunk2_in_lhs_eval3680);
             c=paren_chunk2();
             following.pop();
 
-            match(input,25,FOLLOW_25_in_lhs_eval3673); 
+            match(input,25,FOLLOW_25_in_lhs_eval3684); 
              
             			checkTrailingSemicolon( c, offset(loc.getLine()) );
             			d = new EvalDescr( c ); 
@@ -6211,7 +6252,7 @@
 
 
     // $ANTLR start dotted_name
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1238:1: dotted_name returns [String name] : id= ID ( '.' id= ID )* ( '[' ']' )* ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1255:1: dotted_name returns [String name] : id= ID ( '.' id= ID )* ( '[' ']' )* ;
     public String dotted_name() throws RecognitionException {   
         String name;
         Token id=null;
@@ -6220,62 +6261,62 @@
         		name = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1243:17: (id= ID ( '.' id= ID )* ( '[' ']' )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1243:17: id= ID ( '.' id= ID )* ( '[' ']' )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1260:17: (id= ID ( '.' id= ID )* ( '[' ']' )* )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1260:17: id= ID ( '.' id= ID )* ( '[' ']' )*
             {
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_dotted_name3705); 
+            match(input,ID,FOLLOW_ID_in_dotted_name3716); 
              name=id.getText(); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1243:46: ( '.' id= ID )*
-            loop79:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1260:46: ( '.' id= ID )*
+            loop80:
             do {
-                int alt79=2;
-                int LA79_0 = input.LA(1);
-                if ( LA79_0==19 ) {
-                    alt79=1;
+                int alt80=2;
+                int LA80_0 = input.LA(1);
+                if ( LA80_0==19 ) {
+                    alt80=1;
                 }
 
 
-                switch (alt79) {
+                switch (alt80) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1243:48: '.' id= ID
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1260:48: '.' id= ID
             	    {
-            	    match(input,19,FOLLOW_19_in_dotted_name3711); 
+            	    match(input,19,FOLLOW_19_in_dotted_name3722); 
             	    id=(Token)input.LT(1);
-            	    match(input,ID,FOLLOW_ID_in_dotted_name3715); 
+            	    match(input,ID,FOLLOW_ID_in_dotted_name3726); 
             	     name = name + "." + id.getText(); 
 
             	    }
             	    break;
 
             	default :
-            	    break loop79;
+            	    break loop80;
                 }
             } while (true);
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1243:99: ( '[' ']' )*
-            loop80:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1260:99: ( '[' ']' )*
+            loop81:
             do {
-                int alt80=2;
-                int LA80_0 = input.LA(1);
-                if ( LA80_0==45 ) {
-                    alt80=1;
+                int alt81=2;
+                int LA81_0 = input.LA(1);
+                if ( LA81_0==45 ) {
+                    alt81=1;
                 }
 
 
-                switch (alt80) {
+                switch (alt81) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1243:101: '[' ']'
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1260:101: '[' ']'
             	    {
-            	    match(input,45,FOLLOW_45_in_dotted_name3724); 
-            	    match(input,46,FOLLOW_46_in_dotted_name3726); 
+            	    match(input,45,FOLLOW_45_in_dotted_name3735); 
+            	    match(input,46,FOLLOW_46_in_dotted_name3737); 
             	     name = name + "[]";
 
             	    }
             	    break;
 
             	default :
-            	    break loop80;
+            	    break loop81;
                 }
             } while (true);
 
@@ -6295,7 +6336,7 @@
 
 
     // $ANTLR start argument_name
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1246:1: argument_name returns [String name] : id= ID ( '[' ']' )* ;
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1263:1: argument_name returns [String name] : id= ID ( '[' ']' )* ;
     public String argument_name() throws RecognitionException {   
         String name;
         Token id=null;
@@ -6304,35 +6345,35 @@
         		name = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1251:17: (id= ID ( '[' ']' )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1251:17: id= ID ( '[' ']' )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1268:17: (id= ID ( '[' ']' )* )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1268:17: id= ID ( '[' ']' )*
             {
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_argument_name3756); 
+            match(input,ID,FOLLOW_ID_in_argument_name3767); 
              name=id.getText(); 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1251:46: ( '[' ']' )*
-            loop81:
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1268:46: ( '[' ']' )*
+            loop82:
             do {
-                int alt81=2;
-                int LA81_0 = input.LA(1);
-                if ( LA81_0==45 ) {
-                    alt81=1;
+                int alt82=2;
+                int LA82_0 = input.LA(1);
+                if ( LA82_0==45 ) {
+                    alt82=1;
                 }
 
 
-                switch (alt81) {
+                switch (alt82) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1251:48: '[' ']'
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1268:48: '[' ']'
             	    {
-            	    match(input,45,FOLLOW_45_in_argument_name3762); 
-            	    match(input,46,FOLLOW_46_in_argument_name3764); 
+            	    match(input,45,FOLLOW_45_in_argument_name3773); 
+            	    match(input,46,FOLLOW_46_in_argument_name3775); 
             	     name = name + "[]";
 
             	    }
             	    break;
 
             	default :
-            	    break loop81;
+            	    break loop82;
                 }
             } while (true);
 
@@ -6352,7 +6393,7 @@
 
 
     // $ANTLR start word
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1255:1: word returns [String word] : (id= ID | 'import' | 'use' | 'rule' | 'query' | 'salience' | 'no-loop' | 'when' | 'then' | 'end' | str= STRING );
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1272:1: word returns [String word] : (id= ID | 'import' | 'use' | 'rule' | 'query' | 'salience' | 'no-loop' | 'when' | 'then' | 'end' | str= STRING );
     public String word() throws RecognitionException {   
         String word;
         Token id=null;
@@ -6362,136 +6403,136 @@
         		word = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1259:17: (id= ID | 'import' | 'use' | 'rule' | 'query' | 'salience' | 'no-loop' | 'when' | 'then' | 'end' | str= STRING )
-            int alt82=11;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1276:17: (id= ID | 'import' | 'use' | 'rule' | 'query' | 'salience' | 'no-loop' | 'when' | 'then' | 'end' | str= STRING )
+            int alt83=11;
             switch ( input.LA(1) ) {
             case ID:
-                alt82=1;
+                alt83=1;
                 break;
             case 17:
-                alt82=2;
+                alt83=2;
                 break;
             case 57:
-                alt82=3;
+                alt83=3;
                 break;
             case 31:
-                alt82=4;
+                alt83=4;
                 break;
             case 28:
-                alt82=5;
+                alt83=5;
                 break;
             case 36:
-                alt82=6;
+                alt83=6;
                 break;
             case 37:
-                alt82=7;
+                alt83=7;
                 break;
             case 32:
-                alt82=8;
+                alt83=8;
                 break;
             case 34:
-                alt82=9;
+                alt83=9;
                 break;
             case 29:
-                alt82=10;
+                alt83=10;
                 break;
             case STRING:
-                alt82=11;
+                alt83=11;
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1255:1: word returns [String word] : (id= ID | \'import\' | \'use\' | \'rule\' | \'query\' | \'salience\' | \'no-loop\' | \'when\' | \'then\' | \'end\' | str= STRING );", 82, 0, input);
+                    new NoViableAltException("1272:1: word returns [String word] : (id= ID | \'import\' | \'use\' | \'rule\' | \'query\' | \'salience\' | \'no-loop\' | \'when\' | \'then\' | \'end\' | str= STRING );", 83, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt82) {
+            switch (alt83) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1259:17: id= ID
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1276:17: id= ID
                     {
                     id=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_word3792); 
+                    match(input,ID,FOLLOW_ID_in_word3803); 
                      word=id.getText(); 
 
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1260:17: 'import'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1277:17: 'import'
                     {
-                    match(input,17,FOLLOW_17_in_word3804); 
+                    match(input,17,FOLLOW_17_in_word3815); 
                      word="import"; 
 
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1261:17: 'use'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1278:17: 'use'
                     {
-                    match(input,57,FOLLOW_57_in_word3813); 
+                    match(input,57,FOLLOW_57_in_word3824); 
                      word="use"; 
 
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1262:17: 'rule'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1279:17: 'rule'
                     {
-                    match(input,31,FOLLOW_31_in_word3825); 
+                    match(input,31,FOLLOW_31_in_word3836); 
                      word="rule"; 
 
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1263:17: 'query'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1280:17: 'query'
                     {
-                    match(input,28,FOLLOW_28_in_word3836); 
+                    match(input,28,FOLLOW_28_in_word3847); 
                      word="query"; 
 
                     }
                     break;
                 case 6 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1264:17: 'salience'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1281:17: 'salience'
                     {
-                    match(input,36,FOLLOW_36_in_word3846); 
+                    match(input,36,FOLLOW_36_in_word3857); 
                      word="salience"; 
 
                     }
                     break;
                 case 7 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1265:17: 'no-loop'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1282:17: 'no-loop'
                     {
-                    match(input,37,FOLLOW_37_in_word3854); 
+                    match(input,37,FOLLOW_37_in_word3865); 
                      word="no-loop"; 
 
                     }
                     break;
                 case 8 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1266:17: 'when'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1283:17: 'when'
                     {
-                    match(input,32,FOLLOW_32_in_word3862); 
+                    match(input,32,FOLLOW_32_in_word3873); 
                      word="when"; 
 
                     }
                     break;
                 case 9 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1267:17: 'then'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1284:17: 'then'
                     {
-                    match(input,34,FOLLOW_34_in_word3873); 
+                    match(input,34,FOLLOW_34_in_word3884); 
                      word="then"; 
 
                     }
                     break;
                 case 10 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1268:17: 'end'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1285:17: 'end'
                     {
-                    match(input,29,FOLLOW_29_in_word3884); 
+                    match(input,29,FOLLOW_29_in_word3895); 
                      word="end"; 
 
                     }
                     break;
                 case 11 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1269:17: str= STRING
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1286:17: str= STRING
                     {
                     str=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_word3898); 
+                    match(input,STRING,FOLLOW_STRING_in_word3909); 
                      word=getString(str);
 
                     }
@@ -6511,130 +6552,130 @@
 
 
     // $ANTLR start operator
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1272:1: operator returns [String str] : ( '==' | '=' | '>' | '>=' | '<' | '<=' | '!=' | 'contains' | 'matches' | 'excludes' );
+    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1289:1: operator returns [String str] : ( '==' | '=' | '>' | '>=' | '<' | '<=' | '!=' | 'contains' | 'matches' | 'excludes' );
     public String operator() throws RecognitionException {   
         String str;
 
         		str = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1278:17: ( '==' | '=' | '>' | '>=' | '<' | '<=' | '!=' | 'contains' | 'matches' | 'excludes' )
-            int alt83=10;
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1295:17: ( '==' | '=' | '>' | '>=' | '<' | '<=' | '!=' | 'contains' | 'matches' | 'excludes' )
+            int alt84=10;
             switch ( input.LA(1) ) {
             case 58:
-                alt83=1;
+                alt84=1;
                 break;
             case 59:
-                alt83=2;
+                alt84=2;
                 break;
             case 60:
-                alt83=3;
+                alt84=3;
                 break;
             case 61:
-                alt83=4;
+                alt84=4;
                 break;
             case 62:
-                alt83=5;
+                alt84=5;
                 break;
             case 63:
-                alt83=6;
+                alt84=6;
                 break;
             case 64:
-                alt83=7;
+                alt84=7;
                 break;
             case 65:
-                alt83=8;
+                alt84=8;
                 break;
             case 66:
-                alt83=9;
+                alt84=9;
                 break;
             case 67:
-                alt83=10;
+                alt84=10;
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1272:1: operator returns [String str] : ( \'==\' | \'=\' | \'>\' | \'>=\' | \'<\' | \'<=\' | \'!=\' | \'contains\' | \'matches\' | \'excludes\' );", 83, 0, input);
+                    new NoViableAltException("1289:1: operator returns [String str] : ( \'==\' | \'=\' | \'>\' | \'>=\' | \'<\' | \'<=\' | \'!=\' | \'contains\' | \'matches\' | \'excludes\' );", 84, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt83) {
+            switch (alt84) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1278:17: '=='
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1295:17: '=='
                     {
-                    match(input,58,FOLLOW_58_in_operator3927); 
+                    match(input,58,FOLLOW_58_in_operator3938); 
                     str= "==";
 
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1279:18: '='
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1296:18: '='
                     {
-                    match(input,59,FOLLOW_59_in_operator3934); 
+                    match(input,59,FOLLOW_59_in_operator3945); 
                     str="==";
 
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1280:18: '>'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1297:18: '>'
                     {
-                    match(input,60,FOLLOW_60_in_operator3941); 
+                    match(input,60,FOLLOW_60_in_operator3952); 
                     str=">";
 
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1281:18: '>='
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1298:18: '>='
                     {
-                    match(input,61,FOLLOW_61_in_operator3948); 
+                    match(input,61,FOLLOW_61_in_operator3959); 
                     str=">=";
 
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1282:18: '<'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1299:18: '<'
                     {
-                    match(input,62,FOLLOW_62_in_operator3957); 
+                    match(input,62,FOLLOW_62_in_operator3968); 
                     str="<";
 
                     }
                     break;
                 case 6 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1283:18: '<='
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1300:18: '<='
                     {
-                    match(input,63,FOLLOW_63_in_operator3964); 
+                    match(input,63,FOLLOW_63_in_operator3975); 
                     str="<=";
 
                     }
                     break;
                 case 7 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1284:18: '!='
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1301:18: '!='
                     {
-                    match(input,64,FOLLOW_64_in_operator3971); 
+                    match(input,64,FOLLOW_64_in_operator3982); 
                     str="!=";
 
                     }
                     break;
                 case 8 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1285:18: 'contains'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1302:18: 'contains'
                     {
-                    match(input,65,FOLLOW_65_in_operator3978); 
+                    match(input,65,FOLLOW_65_in_operator3989); 
                     str="contains";
 
                     }
                     break;
                 case 9 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1286:18: 'matches'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1303:18: 'matches'
                     {
-                    match(input,66,FOLLOW_66_in_operator3985); 
+                    match(input,66,FOLLOW_66_in_operator3996); 
                     str="matches";
 
                     }
                     break;
                 case 10 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1287:18: 'excludes'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1304:18: 'excludes'
                     {
-                    match(input,67,FOLLOW_67_in_operator3992); 
+                    match(input,67,FOLLOW_67_in_operator4003); 
                     str="excludes";
 
                     }
@@ -6653,7 +6694,7 @@
     // $ANTLR end operator
 
 
-    protected DFA2 dfa2 = new DFA2();protected DFA4 dfa4 = new DFA4();protected DFA13 dfa13 = new DFA13();protected DFA14 dfa14 = new DFA14();protected DFA15 dfa15 = new DFA15();protected DFA47 dfa47 = new DFA47();protected DFA48 dfa48 = new DFA48();protected DFA49 dfa49 = new DFA49();protected DFA60 dfa60 = new DFA60();protected DFA63 dfa63 = new DFA63();protected DFA64 dfa64 = new DFA64();
+    protected DFA2 dfa2 = new DFA2();protected DFA4 dfa4 = new DFA4();protected DFA13 dfa13 = new DFA13();protected DFA14 dfa14 = new DFA14();protected DFA15 dfa15 = new DFA15();protected DFA48 dfa48 = new DFA48();protected DFA49 dfa49 = new DFA49();protected DFA50 dfa50 = new DFA50();protected DFA61 dfa61 = new DFA61();protected DFA64 dfa64 = new DFA64();protected DFA65 dfa65 = new DFA65();
     class DFA2 extends DFA {
         public int predict(IntStream input) throws RecognitionException {
             return predict(input, s0);
@@ -6865,7 +6906,6 @@
                 throw nvae;
             }
         };
-        DFA.State s93 = new DFA.State() {{alt=1;}};
         DFA.State s127 = new DFA.State() {{alt=1;}};
         DFA.State s128 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
@@ -7349,7 +7389,7 @@
                     throw nvae;        }
             }
         };
-        DFA.State s94 = new DFA.State() {
+        DFA.State s93 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case 26:
@@ -7424,19 +7464,20 @@
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 4, 94, input);
+                        new NoViableAltException("", 4, 93, input);
 
                     throw nvae;        }
             }
         };
+        DFA.State s94 = new DFA.State() {{alt=1;}};
         DFA.State s95 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case 27:
-                    return s93;
+                    return s94;
 
                 case 26:
-                    return s94;
+                    return s93;
 
                 case EOL:
                 case ID:
@@ -7512,10 +7553,10 @@
         DFA.State s73 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 27:
+                case 26:
                     return s93;
 
-                case 26:
+                case 27:
                     return s94;
 
                 case EOL:
@@ -7670,7 +7711,7 @@
                     throw nvae;        }
             }
         };
-        DFA.State s57 = new DFA.State() {
+        DFA.State s59 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case 26:
@@ -7745,97 +7786,43 @@
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 4, 57, input);
+                        new NoViableAltException("", 4, 59, input);
 
                     throw nvae;        }
             }
         };
-        DFA.State s56 = new DFA.State() {
+        DFA.State s58 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA4_56 = input.LA(1);
-                if ( LA4_56==26 ) {return s57;}
-                if ( LA4_56==EOL||LA4_56==15 ) {return s56;}
+                int LA4_58 = input.LA(1);
+                if ( LA4_58==26 ) {return s59;}
+                if ( LA4_58==EOL||LA4_58==15 ) {return s58;}
 
                 NoViableAltException nvae =
-        	    new NoViableAltException("", 4, 56, input);
+        	    new NoViableAltException("", 4, 58, input);
 
                 throw nvae;
             }
         };
-        DFA.State s39 = new DFA.State() {
+        DFA.State s41 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA4_39 = input.LA(1);
-                if ( LA4_39==EOL||LA4_39==15 ) {return s56;}
-                if ( LA4_39==26 ) {return s57;}
+                int LA4_41 = input.LA(1);
+                if ( LA4_41==EOL||LA4_41==15 ) {return s58;}
+                if ( LA4_41==26 ) {return s59;}
 
                 NoViableAltException nvae =
-        	    new NoViableAltException("", 4, 39, input);
+        	    new NoViableAltException("", 4, 41, input);
 
                 throw nvae;
             }
         };
-        DFA.State s68 = new DFA.State() {
-            public DFA.State transition(IntStream input) throws RecognitionException {
-                switch ( input.LA(1) ) {
-                case 24:
-                    return s52;
-
-                case 25:
-                    return s39;
-
-                case EOL:
-                case 15:
-                    return s68;
-
-                default:
-                    NoViableAltException nvae =
-                        new NoViableAltException("", 4, 68, input);
-
-                    throw nvae;        }
-            }
-        };
-        DFA.State s89 = new DFA.State() {
-            public DFA.State transition(IntStream input) throws RecognitionException {
-                switch ( input.LA(1) ) {
-                case EOL:
-                case 15:
-                    return s68;
-
-                case 24:
-                    return s52;
-
-                case 25:
-                    return s39;
-
-                case 45:
-                    return s67;
-
-                default:
-                    NoViableAltException nvae =
-                        new NoViableAltException("", 4, 89, input);
-
-                    throw nvae;        }
-            }
-        };
-        DFA.State s67 = new DFA.State() {
-            public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA4_67 = input.LA(1);
-                if ( LA4_67==46 ) {return s89;}
-
-                NoViableAltException nvae =
-        	    new NoViableAltException("", 4, 67, input);
-
-                throw nvae;
-            }
-        };
         DFA.State s104 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case 25:
-                    return s39;
+                    return s41;
 
                 case 24:
-                    return s52;
+                    return s54;
 
                 case EOL:
                 case 15:
@@ -7859,10 +7846,10 @@
                     return s104;
 
                 case 25:
-                    return s39;
+                    return s41;
 
                 case 24:
-                    return s52;
+                    return s54;
 
                 default:
                     NoViableAltException nvae =
@@ -7875,10 +7862,10 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case 25:
-                    return s39;
+                    return s41;
 
                 case 24:
-                    return s52;
+                    return s54;
 
                 case EOL:
                 case 15:
@@ -7898,17 +7885,17 @@
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case 45:
-                    return s50;
+                    return s52;
 
                 case EOL:
                 case 15:
                     return s84;
 
                 case 25:
-                    return s39;
+                    return s41;
 
                 case 24:
-                    return s52;
+                    return s54;
 
                 case 19:
                     return s20;
@@ -7935,60 +7922,114 @@
                 throw nvae;
             }
         };
-        DFA.State s52 = new DFA.State() {
+        DFA.State s54 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA4_52 = input.LA(1);
-                if ( LA4_52==EOL||LA4_52==15 ) {return s65;}
-                if ( LA4_52==ID ) {return s66;}
+                int LA4_54 = input.LA(1);
+                if ( LA4_54==EOL||LA4_54==15 ) {return s65;}
+                if ( LA4_54==ID ) {return s66;}
 
                 NoViableAltException nvae =
-        	    new NoViableAltException("", 4, 52, input);
+        	    new NoViableAltException("", 4, 54, input);
 
                 throw nvae;
             }
         };
-        DFA.State s55 = new DFA.State() {
+        DFA.State s68 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 45:
-                    return s67;
+                case 24:
+                    return s54;
 
+                case 25:
+                    return s41;
+
                 case EOL:
                 case 15:
                     return s68;
 
+                default:
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 4, 68, input);
+
+                    throw nvae;        }
+            }
+        };
+        DFA.State s89 = new DFA.State() {
+            public DFA.State transition(IntStream input) throws RecognitionException {
+                switch ( input.LA(1) ) {
+                case EOL:
+                case 15:
+                    return s68;
+
                 case 24:
-                    return s52;
+                    return s54;
 
                 case 25:
-                    return s39;
+                    return s41;
 
+                case 45:
+                    return s67;
+
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 4, 55, input);
+                        new NoViableAltException("", 4, 89, input);
 
                     throw nvae;        }
             }
         };
-        DFA.State s51 = new DFA.State() {
+        DFA.State s67 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
+                int LA4_67 = input.LA(1);
+                if ( LA4_67==46 ) {return s89;}
+
+                NoViableAltException nvae =
+        	    new NoViableAltException("", 4, 67, input);
+
+                throw nvae;
+            }
+        };
+        DFA.State s57 = new DFA.State() {
+            public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
+                case 45:
+                    return s67;
+
+                case EOL:
+                case 15:
+                    return s68;
+
                 case 24:
-                    return s52;
+                    return s54;
 
                 case 25:
-                    return s39;
+                    return s41;
 
+                default:
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 4, 57, input);
+
+                    throw nvae;        }
+            }
+        };
+        DFA.State s53 = new DFA.State() {
+            public DFA.State transition(IntStream input) throws RecognitionException {
+                switch ( input.LA(1) ) {
+                case ID:
+                    return s57;
+
                 case EOL:
                 case 15:
-                    return s51;
+                    return s53;
 
-                case ID:
-                    return s55;
+                case 24:
+                    return s54;
 
+                case 25:
+                    return s41;
+
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 4, 51, input);
+                        new NoViableAltException("", 4, 53, input);
 
                     throw nvae;        }
             }
@@ -7998,19 +8039,19 @@
                 switch ( input.LA(1) ) {
                 case EOL:
                 case 15:
-                    return s51;
+                    return s53;
 
                 case 24:
-                    return s52;
+                    return s54;
 
                 case 25:
-                    return s39;
+                    return s41;
 
                 case 45:
-                    return s50;
+                    return s52;
 
                 case ID:
-                    return s55;
+                    return s57;
 
                 default:
                     NoViableAltException nvae =
@@ -8019,126 +8060,126 @@
                     throw nvae;        }
             }
         };
-        DFA.State s50 = new DFA.State() {
+        DFA.State s52 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA4_50 = input.LA(1);
-                if ( LA4_50==46 ) {return s60;}
+                int LA4_52 = input.LA(1);
+                if ( LA4_52==46 ) {return s60;}
 
                 NoViableAltException nvae =
-        	    new NoViableAltException("", 4, 50, input);
+        	    new NoViableAltException("", 4, 52, input);
 
                 throw nvae;
             }
         };
-        DFA.State s38 = new DFA.State() {
+        DFA.State s40 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case 45:
-                    return s50;
+                    return s52;
 
                 case EOL:
                 case 15:
-                    return s51;
+                    return s53;
 
                 case 24:
-                    return s52;
+                    return s54;
 
                 case 25:
-                    return s39;
+                    return s41;
 
                 case 19:
                     return s20;
 
                 case ID:
-                    return s55;
+                    return s57;
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 4, 38, input);
+                        new NoViableAltException("", 4, 40, input);
 
                     throw nvae;        }
             }
         };
-        DFA.State s37 = new DFA.State() {
+        DFA.State s39 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case ID:
-                    return s38;
+                    return s40;
 
                 case EOL:
                 case 15:
-                    return s37;
+                    return s39;
 
                 case 25:
-                    return s39;
+                    return s41;
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 4, 37, input);
+                        new NoViableAltException("", 4, 39, input);
 
                     throw nvae;        }
             }
         };
-        DFA.State s26 = new DFA.State() {
+        DFA.State s29 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case EOL:
                 case 15:
-                    return s37;
+                    return s39;
 
                 case ID:
-                    return s38;
+                    return s40;
 
                 case 25:
-                    return s39;
+                    return s41;
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 4, 26, input);
+                        new NoViableAltException("", 4, 29, input);
 
                     throw nvae;        }
             }
         };
-        DFA.State s40 = new DFA.State() {
+        DFA.State s37 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA4_40 = input.LA(1);
-                if ( LA4_40==23 ) {return s26;}
-                if ( LA4_40==EOL||LA4_40==15 ) {return s40;}
+                int LA4_37 = input.LA(1);
+                if ( LA4_37==23 ) {return s29;}
+                if ( LA4_37==EOL||LA4_37==15 ) {return s37;}
 
                 NoViableAltException nvae =
-        	    new NoViableAltException("", 4, 40, input);
+        	    new NoViableAltException("", 4, 37, input);
 
                 throw nvae;
             }
         };
-        DFA.State s29 = new DFA.State() {
+        DFA.State s28 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA4_29 = input.LA(1);
-                if ( LA4_29==EOL||LA4_29==15 ) {return s40;}
-                if ( LA4_29==23 ) {return s26;}
+                int LA4_28 = input.LA(1);
+                if ( LA4_28==EOL||LA4_28==15 ) {return s37;}
+                if ( LA4_28==23 ) {return s29;}
 
                 NoViableAltException nvae =
-        	    new NoViableAltException("", 4, 29, input);
+        	    new NoViableAltException("", 4, 28, input);
 
                 throw nvae;
             }
         };
-        DFA.State s25 = new DFA.State() {
+        DFA.State s27 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case 23:
-                    return s26;
+                    return s29;
 
                 case EOL:
                 case 15:
-                    return s25;
+                    return s27;
 
                 case ID:
-                    return s29;
+                    return s28;
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 4, 25, input);
+                        new NoViableAltException("", 4, 27, input);
 
                     throw nvae;        }
             }
@@ -8146,20 +8187,20 @@
         DFA.State s15 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case EOL:
-                case 15:
-                    return s25;
-
-                case 23:
-                    return s26;
-
                 case 19:
                     return s20;
 
                 case 45:
                     return s21;
 
+                case EOL:
+                case 15:
+                    return s27;
+
                 case ID:
+                    return s28;
+
+                case 23:
                     return s29;
 
                 default:
@@ -8290,17 +8331,17 @@
         public int predict(IntStream input) throws RecognitionException {
             return predict(input, s0);
         }
-        DFA.State s7 = new DFA.State() {{alt=1;}};
+        DFA.State s3 = new DFA.State() {{alt=1;}};
         DFA.State s2 = new DFA.State() {{alt=2;}};
-        DFA.State s4 = new DFA.State() {
+        DFA.State s5 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
                 case ID:
-                    return s7;
+                    return s3;
 
                 case EOL:
                 case 15:
-                    return s4;
+                    return s5;
 
                 case 24:
                 case 25:
@@ -8308,7 +8349,7 @@
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 14, 4, input);
+                        new NoViableAltException("", 14, 5, input);
 
                     throw nvae;        }
             }
@@ -8318,18 +8359,18 @@
                 switch ( input.LA(1) ) {
                 case EOL:
                 case 15:
+                    return s5;
+
+                case ID:
+                    return s3;
+
+                case 45:
                     return s4;
 
                 case 24:
                 case 25:
                     return s2;
 
-                case 45:
-                    return s3;
-
-                case ID:
-                    return s7;
-
                 default:
                     NoViableAltException nvae =
                         new NoViableAltException("", 14, 9, input);
@@ -8337,13 +8378,13 @@
                     throw nvae;        }
             }
         };
-        DFA.State s3 = new DFA.State() {
+        DFA.State s4 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA14_3 = input.LA(1);
-                if ( LA14_3==46 ) {return s9;}
+                int LA14_4 = input.LA(1);
+                if ( LA14_4==46 ) {return s9;}
 
                 NoViableAltException nvae =
-        	    new NoViableAltException("", 14, 3, input);
+        	    new NoViableAltException("", 14, 4, input);
 
                 throw nvae;
             }
@@ -8351,21 +8392,21 @@
         DFA.State s1 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 45:
+                case ID:
+                case 19:
                     return s3;
 
+                case 45:
+                    return s4;
+
                 case EOL:
                 case 15:
-                    return s4;
+                    return s5;
 
                 case 24:
                 case 25:
                     return s2;
 
-                case ID:
-                case 19:
-                    return s7;
-
                 default:
                     NoViableAltException nvae =
                         new NoViableAltException("", 14, 1, input);
@@ -8420,15 +8461,15 @@
                 case 15:
                     return s5;
 
-                case ID:
-                    return s3;
+                case 24:
+                case 25:
+                    return s2;
 
                 case 45:
                     return s4;
 
-                case 24:
-                case 25:
-                    return s2;
+                case ID:
+                    return s3;
 
                 default:
                     NoViableAltException nvae =
@@ -8486,28 +8527,28 @@
             }
         };
 
-    }class DFA47 extends DFA {
+    }class DFA48 extends DFA {
         public int predict(IntStream input) throws RecognitionException {
             return predict(input, s0);
         }
-        DFA.State s2 = new DFA.State() {{alt=2;}};
-        DFA.State s6 = new DFA.State() {{alt=1;}};
-        DFA.State s4 = new DFA.State() {
+        DFA.State s4 = new DFA.State() {{alt=2;}};
+        DFA.State s3 = new DFA.State() {{alt=1;}};
+        DFA.State s2 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
-                case 33:
-                    return s6;
+                case 23:
+                    return s4;
 
                 case EOL:
                 case 15:
-                    return s4;
-
-                case 23:
                     return s2;
 
+                case 33:
+                    return s3;
+
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 47, 4, input);
+                        new NoViableAltException("", 48, 2, input);
 
                     throw nvae;        }
             }
@@ -8515,38 +8556,38 @@
         DFA.State s1 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
+                case EOL:
+                case 15:
+                    return s2;
+
+                case 33:
+                    return s3;
+
                 case 19:
                 case 23:
                 case 45:
-                    return s2;
-
-                case EOL:
-                case 15:
                     return s4;
 
-                case 33:
-                    return s6;
-
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 47, 1, input);
+                        new NoViableAltException("", 48, 1, input);
 
                     throw nvae;        }
             }
         };
         DFA.State s0 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA47_0 = input.LA(1);
-                if ( LA47_0==ID ) {return s1;}
+                int LA48_0 = input.LA(1);
+                if ( LA48_0==ID ) {return s1;}
 
                 NoViableAltException nvae =
-        	    new NoViableAltException("", 47, 0, input);
+        	    new NoViableAltException("", 48, 0, input);
 
                 throw nvae;
             }
         };
 
-    }class DFA48 extends DFA {
+    }class DFA49 extends DFA {
         public int predict(IntStream input) throws RecognitionException {
             return predict(input, s0);
         }
@@ -8569,7 +8610,7 @@
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 48, 54, input);
+                        new NoViableAltException("", 49, 54, input);
 
                     throw nvae;        }
             }
@@ -8581,19 +8622,19 @@
                 case 15:
                     return s54;
 
-                case 24:
-                case 25:
-                    return s27;
-
                 case 19:
                 case 23:
                 case 33:
                 case 45:
                     return s6;
 
+                case 24:
+                case 25:
+                    return s27;
+
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 48, 31, input);
+                        new NoViableAltException("", 49, 31, input);
 
                     throw nvae;        }
             }
@@ -8615,18 +8656,18 @@
                 case 15:
                     return s26;
 
+                case ID:
+                    return s31;
+
                 case 23:
                 case 54:
                 case 55:
                 case 56:
                     return s6;
 
-                case ID:
-                    return s31;
-
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 48, 26, input);
+                        new NoViableAltException("", 49, 26, input);
 
                     throw nvae;        }
             }
@@ -8659,7 +8700,7 @@
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 48, 15, input);
+                        new NoViableAltException("", 49, 15, input);
 
                     throw nvae;        }
             }
@@ -8685,7 +8726,7 @@
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 48, 8, input);
+                        new NoViableAltException("", 49, 8, input);
 
                     throw nvae;        }
             }
@@ -8715,18 +8756,18 @@
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 48, 5, input);
+                        new NoViableAltException("", 49, 5, input);
 
                     throw nvae;        }
             }
         };
         DFA.State s2 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA48_2 = input.LA(1);
-                if ( LA48_2==ID ) {return s5;}
+                int LA49_2 = input.LA(1);
+                if ( LA49_2==ID ) {return s5;}
 
                 NoViableAltException nvae =
-        	    new NoViableAltException("", 48, 2, input);
+        	    new NoViableAltException("", 49, 2, input);
 
                 throw nvae;
             }
@@ -8734,29 +8775,29 @@
         DFA.State s3 = new DFA.State() {{alt=3;}};
         DFA.State s1 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA48_1 = input.LA(1);
-                if ( LA48_1==19 ) {return s2;}
-                if ( LA48_1==EOL||LA48_1==15||LA48_1==23 ) {return s3;}
+                int LA49_1 = input.LA(1);
+                if ( LA49_1==19 ) {return s2;}
+                if ( LA49_1==EOL||LA49_1==15||LA49_1==23 ) {return s3;}
 
                 NoViableAltException nvae =
-        	    new NoViableAltException("", 48, 1, input);
+        	    new NoViableAltException("", 49, 1, input);
 
                 throw nvae;
             }
         };
         DFA.State s0 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA48_0 = input.LA(1);
-                if ( LA48_0==ID ) {return s1;}
+                int LA49_0 = input.LA(1);
+                if ( LA49_0==ID ) {return s1;}
 
                 NoViableAltException nvae =
-        	    new NoViableAltException("", 48, 0, input);
+        	    new NoViableAltException("", 49, 0, input);
 
                 throw nvae;
             }
         };
 
-    }class DFA49 extends DFA {
+    }class DFA50 extends DFA {
         public int predict(IntStream input) throws RecognitionException {
             return predict(input, s0);
         }
@@ -8777,7 +8818,7 @@
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 49, 1, input);
+                        new NoViableAltException("", 50, 1, input);
 
                     throw nvae;        }
             }
@@ -8797,13 +8838,13 @@
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 49, 0, input);
+                        new NoViableAltException("", 50, 0, input);
 
                     throw nvae;        }
             }
         };
 
-    }class DFA60 extends DFA {
+    }class DFA61 extends DFA {
         public int predict(IntStream input) throws RecognitionException {
             return predict(input, s0);
         }
@@ -8812,19 +8853,19 @@
         DFA.State s1 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
+                case ID:
+                    return s2;
+
                 case EOL:
                 case 15:
                     return s1;
 
-                case ID:
-                    return s2;
-
                 case 25:
                     return s3;
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 60, 1, input);
+                        new NoViableAltException("", 61, 1, input);
 
                     throw nvae;        }
             }
@@ -8844,21 +8885,24 @@
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 60, 0, input);
+                        new NoViableAltException("", 61, 0, input);
 
                     throw nvae;        }
             }
         };
 
-    }class DFA63 extends DFA {
+    }class DFA64 extends DFA {
         public int predict(IntStream input) throws RecognitionException {
             return predict(input, s0);
         }
+        DFA.State s3 = new DFA.State() {{alt=1;}};
         DFA.State s2 = new DFA.State() {{alt=2;}};
-        DFA.State s3 = new DFA.State() {{alt=1;}};
         DFA.State s1 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
                 switch ( input.LA(1) ) {
+                case 24:
+                    return s3;
+
                 case EOL:
                 case 15:
                     return s1;
@@ -8866,12 +8910,9 @@
                 case 25:
                     return s2;
 
-                case 24:
-                    return s3;
-
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 63, 1, input);
+                        new NoViableAltException("", 64, 1, input);
 
                     throw nvae;        }
             }
@@ -8891,13 +8932,13 @@
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 63, 0, input);
+                        new NoViableAltException("", 64, 0, input);
 
                     throw nvae;        }
             }
         };
 
-    }class DFA64 extends DFA {
+    }class DFA65 extends DFA {
         public int predict(IntStream input) throws RecognitionException {
             return predict(input, s0);
         }
@@ -8929,7 +8970,7 @@
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 64, 2, input);
+                        new NoViableAltException("", 65, 2, input);
 
                     throw nvae;        }
             }
@@ -8960,18 +9001,18 @@
 
                 default:
                     NoViableAltException nvae =
-                        new NoViableAltException("", 64, 1, input);
+                        new NoViableAltException("", 65, 1, input);
 
                     throw nvae;        }
             }
         };
         DFA.State s0 = new DFA.State() {
             public DFA.State transition(IntStream input) throws RecognitionException {
-                int LA64_0 = input.LA(1);
-                if ( LA64_0==ID ) {return s1;}
+                int LA65_0 = input.LA(1);
+                if ( LA65_0==ID ) {return s1;}
 
                 NoViableAltException nvae =
-        	    new NoViableAltException("", 64, 0, input);
+        	    new NoViableAltException("", 65, 0, input);
 
                 throw nvae;
             }
@@ -9078,264 +9119,265 @@
     public static final BitSet FOLLOW_34_in_rule859 = new BitSet(new long[]{0x0000000200008012L});
     public static final BitSet FOLLOW_33_in_rule861 = new BitSet(new long[]{0x0000000000008012L});
     public static final BitSet FOLLOW_opt_eol_in_rule865 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000000FL});
-    public static final BitSet FOLLOW_29_in_rule911 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_rule913 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_import_statement_in_extra_statement933 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_import_statement_in_extra_statement938 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_global_in_extra_statement943 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_in_extra_statement948 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_35_in_rule_attributes967 = new BitSet(new long[]{0x0000000200008012L});
-    public static final BitSet FOLLOW_33_in_rule_attributes970 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_rule_attributes973 = new BitSet(new long[]{0x000003F001000002L});
-    public static final BitSet FOLLOW_24_in_rule_attributes980 = new BitSet(new long[]{0x000003F000000000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes985 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_rule_attributes987 = new BitSet(new long[]{0x000003F001000002L});
-    public static final BitSet FOLLOW_salience_in_rule_attribute1026 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_no_loop_in_rule_attribute1036 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_agenda_group_in_rule_attribute1047 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_duration_in_rule_attribute1060 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_activation_group_in_rule_attribute1074 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_auto_focus_in_rule_attribute1085 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_36_in_salience1118 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_salience1120 = new BitSet(new long[]{0x0000000000000040L});
-    public static final BitSet FOLLOW_INT_in_salience1124 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_15_in_salience1126 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_salience1129 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_37_in_no_loop1164 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_no_loop1166 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_15_in_no_loop1168 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_no_loop1171 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_37_in_no_loop1196 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_BOOL_in_no_loop1200 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_no_loop1202 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_15_in_no_loop1204 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_no_loop1207 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_38_in_auto_focus1253 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_auto_focus1255 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_15_in_auto_focus1257 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_auto_focus1260 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_38_in_auto_focus1285 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_BOOL_in_auto_focus1289 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_auto_focus1291 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_15_in_auto_focus1293 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_auto_focus1296 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_39_in_activation_group1338 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_activation_group1340 = new BitSet(new long[]{0x0000000000000100L});
-    public static final BitSet FOLLOW_STRING_in_activation_group1344 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_15_in_activation_group1346 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_activation_group1349 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_40_in_agenda_group1378 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_agenda_group1380 = new BitSet(new long[]{0x0000000000000100L});
-    public static final BitSet FOLLOW_STRING_in_agenda_group1384 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_15_in_agenda_group1386 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_agenda_group1389 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_41_in_duration1421 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_duration1423 = new BitSet(new long[]{0x0000000000000040L});
-    public static final BitSet FOLLOW_INT_in_duration1427 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_15_in_duration1429 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_duration1432 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_in_normal_lhs_block1458 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_normal_lhs_block1460 = new BitSet(new long[]{0x01C0000000808032L});
-    public static final BitSet FOLLOW_opt_eol_in_normal_lhs_block1472 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_expander_lhs_block1513 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_EOL_in_expander_lhs_block1517 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
-    public static final BitSet FOLLOW_EOL_in_expander_lhs_block1532 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
-    public static final BitSet FOLLOW_lhs_or_in_lhs1574 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_binding_in_lhs_column1602 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_lhs_column1611 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_42_in_from_statement1639 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_from_statement1641 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_from_source_in_from_statement1645 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_from_source1689 = new BitSet(new long[]{0x0000000000080000L});
-    public static final BitSet FOLLOW_19_in_from_source1691 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_from_source1695 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_from_source1722 = new BitSet(new long[]{0x0000000000080000L});
-    public static final BitSet FOLLOW_19_in_from_source1724 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_from_source1728 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_from_source1730 = new BitSet(new long[]{0x0000000000800000L});
-    public static final BitSet FOLLOW_23_in_from_source1733 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_from_source1735 = new BitSet(new long[]{0x00002800040003E2L});
-    public static final BitSet FOLLOW_argument_list_in_from_source1739 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_from_source1741 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_from_source1743 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_from_source1765 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_from_source1767 = new BitSet(new long[]{0x0000000000800000L});
-    public static final BitSet FOLLOW_23_in_from_source1769 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_from_source1771 = new BitSet(new long[]{0x00002800040003E2L});
-    public static final BitSet FOLLOW_argument_list_in_from_source1775 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_from_source1777 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_from_source1779 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_argument_value_in_argument_list1822 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_argument_list1838 = new BitSet(new long[]{0x0000000001000000L});
-    public static final BitSet FOLLOW_24_in_argument_list1840 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_argument_list1842 = new BitSet(new long[]{0x00002800040003E0L});
-    public static final BitSet FOLLOW_argument_value_in_argument_list1846 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_STRING_in_argument_value1886 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INT_in_argument_value1897 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FLOAT_in_argument_value1910 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BOOL_in_argument_value1921 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_argument_value1933 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_43_in_argument_value1944 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EOL_in_rule892 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000000FL});
+    public static final BitSet FOLLOW_29_in_rule922 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_rule924 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_statement_in_extra_statement944 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_import_statement_in_extra_statement949 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_global_in_extra_statement954 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_in_extra_statement959 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_35_in_rule_attributes978 = new BitSet(new long[]{0x0000000200008012L});
+    public static final BitSet FOLLOW_33_in_rule_attributes981 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_rule_attributes984 = new BitSet(new long[]{0x000003F001000002L});
+    public static final BitSet FOLLOW_24_in_rule_attributes991 = new BitSet(new long[]{0x000003F000000000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes996 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_rule_attributes998 = new BitSet(new long[]{0x000003F001000002L});
+    public static final BitSet FOLLOW_salience_in_rule_attribute1037 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_no_loop_in_rule_attribute1047 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_agenda_group_in_rule_attribute1058 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_duration_in_rule_attribute1071 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_activation_group_in_rule_attribute1085 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_auto_focus_in_rule_attribute1096 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_36_in_salience1129 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_salience1131 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_INT_in_salience1135 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_15_in_salience1137 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_salience1140 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_37_in_no_loop1175 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_no_loop1177 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_15_in_no_loop1179 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_no_loop1182 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_37_in_no_loop1207 = new BitSet(new long[]{0x0000000000000080L});
+    public static final BitSet FOLLOW_BOOL_in_no_loop1211 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_no_loop1213 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_15_in_no_loop1215 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_no_loop1218 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_38_in_auto_focus1264 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_auto_focus1266 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_15_in_auto_focus1268 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_auto_focus1271 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_38_in_auto_focus1296 = new BitSet(new long[]{0x0000000000000080L});
+    public static final BitSet FOLLOW_BOOL_in_auto_focus1300 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_auto_focus1302 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_15_in_auto_focus1304 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_auto_focus1307 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_39_in_activation_group1349 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_activation_group1351 = new BitSet(new long[]{0x0000000000000100L});
+    public static final BitSet FOLLOW_STRING_in_activation_group1355 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_15_in_activation_group1357 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_activation_group1360 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_40_in_agenda_group1389 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_agenda_group1391 = new BitSet(new long[]{0x0000000000000100L});
+    public static final BitSet FOLLOW_STRING_in_agenda_group1395 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_15_in_agenda_group1397 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_agenda_group1400 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_41_in_duration1432 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_duration1434 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_INT_in_duration1438 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_15_in_duration1440 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_duration1443 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_in_normal_lhs_block1469 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_normal_lhs_block1471 = new BitSet(new long[]{0x01C0000000808032L});
+    public static final BitSet FOLLOW_opt_eol_in_normal_lhs_block1483 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_expander_lhs_block1524 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_EOL_in_expander_lhs_block1528 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
+    public static final BitSet FOLLOW_EOL_in_expander_lhs_block1543 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
+    public static final BitSet FOLLOW_lhs_or_in_lhs1585 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_binding_in_lhs_column1613 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_lhs_column1622 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_42_in_from_statement1650 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_from_statement1652 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_from_source_in_from_statement1656 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_from_source1700 = new BitSet(new long[]{0x0000000000080000L});
+    public static final BitSet FOLLOW_19_in_from_source1702 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_ID_in_from_source1706 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_from_source1733 = new BitSet(new long[]{0x0000000000080000L});
+    public static final BitSet FOLLOW_19_in_from_source1735 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_ID_in_from_source1739 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_from_source1741 = new BitSet(new long[]{0x0000000000800000L});
+    public static final BitSet FOLLOW_23_in_from_source1744 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_from_source1746 = new BitSet(new long[]{0x00002800040003E2L});
+    public static final BitSet FOLLOW_argument_list_in_from_source1750 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_from_source1752 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_from_source1754 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_from_source1776 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_from_source1778 = new BitSet(new long[]{0x0000000000800000L});
+    public static final BitSet FOLLOW_23_in_from_source1780 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_from_source1782 = new BitSet(new long[]{0x00002800040003E2L});
+    public static final BitSet FOLLOW_argument_list_in_from_source1786 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_from_source1788 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_from_source1790 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_argument_value_in_argument_list1833 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_argument_list1849 = new BitSet(new long[]{0x0000000001000000L});
+    public static final BitSet FOLLOW_24_in_argument_list1851 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_argument_list1853 = new BitSet(new long[]{0x00002800040003E0L});
+    public static final BitSet FOLLOW_argument_value_in_argument_list1857 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_STRING_in_argument_value1897 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_argument_value1908 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_argument_value1921 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_argument_value1932 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_argument_value1944 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_43_in_argument_value1955 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_inline_map_in_argument_value1974 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_inline_array_in_argument_value1990 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_26_in_inline_map2030 = new BitSet(new long[]{0x00002800040003E0L});
-    public static final BitSet FOLLOW_argument_value_in_inline_map2048 = new BitSet(new long[]{0x0000100000000000L});
-    public static final BitSet FOLLOW_44_in_inline_map2050 = new BitSet(new long[]{0x00002800040003E0L});
-    public static final BitSet FOLLOW_argument_value_in_inline_map2054 = new BitSet(new long[]{0x0000000009000010L});
-    public static final BitSet FOLLOW_EOL_in_inline_map2097 = new BitSet(new long[]{0x0000000001000000L});
-    public static final BitSet FOLLOW_24_in_inline_map2101 = new BitSet(new long[]{0x00002800040003F0L});
-    public static final BitSet FOLLOW_EOL_in_inline_map2104 = new BitSet(new long[]{0x00002800040003E0L});
-    public static final BitSet FOLLOW_argument_value_in_inline_map2110 = new BitSet(new long[]{0x0000100000000000L});
-    public static final BitSet FOLLOW_44_in_inline_map2112 = new BitSet(new long[]{0x00002800040003E0L});
-    public static final BitSet FOLLOW_argument_value_in_inline_map2116 = new BitSet(new long[]{0x0000000009000010L});
-    public static final BitSet FOLLOW_27_in_inline_map2152 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_45_in_inline_array2196 = new BitSet(new long[]{0x00002800040003E0L});
-    public static final BitSet FOLLOW_argument_value_in_inline_array2200 = new BitSet(new long[]{0x0000400001000010L});
-    public static final BitSet FOLLOW_EOL_in_inline_array2218 = new BitSet(new long[]{0x0000000001000000L});
-    public static final BitSet FOLLOW_24_in_inline_array2221 = new BitSet(new long[]{0x00002800040003F0L});
-    public static final BitSet FOLLOW_EOL_in_inline_array2223 = new BitSet(new long[]{0x00002800040003E0L});
-    public static final BitSet FOLLOW_argument_value_in_inline_array2228 = new BitSet(new long[]{0x0000400001000010L});
-    public static final BitSet FOLLOW_46_in_inline_array2241 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_fact_binding2284 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact_binding2294 = new BitSet(new long[]{0x0000000200000000L});
-    public static final BitSet FOLLOW_33_in_fact_binding2296 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact_binding2298 = new BitSet(new long[]{0x0000000000800020L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_binding2302 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_23_in_fact_expression2334 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact_expression2336 = new BitSet(new long[]{0x0000000000800020L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2340 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact_expression2342 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_fact_expression2344 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_fact_expression2355 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact_expression2357 = new BitSet(new long[]{0x0001800000000002L});
-    public static final BitSet FOLLOW_set_in_fact_expression2370 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact_expression2375 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_fact_in_fact_expression2389 = new BitSet(new long[]{0x0001800000000002L});
-    public static final BitSet FOLLOW_dotted_name_in_fact2428 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact2436 = new BitSet(new long[]{0x0000000000800000L});
-    public static final BitSet FOLLOW_23_in_fact2444 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact2447 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_constraints_in_fact2453 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact2472 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_fact2476 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_fact2478 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_opt_eol_in_constraints2510 = new BitSet(new long[]{0x0000000000008032L});
-    public static final BitSet FOLLOW_constraint_in_constraints2515 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_predicate_in_constraints2518 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_constraints2526 = new BitSet(new long[]{0x0000000001000000L});
-    public static final BitSet FOLLOW_24_in_constraints2528 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_constraints2530 = new BitSet(new long[]{0x0000000000008032L});
-    public static final BitSet FOLLOW_constraint_in_constraints2533 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_predicate_in_constraints2536 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_constraints2544 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_opt_eol_in_constraint2563 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_constraint2571 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_constraint2573 = new BitSet(new long[]{0x0000000200000000L});
-    public static final BitSet FOLLOW_33_in_constraint2575 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_constraint2577 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_constraint2587 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_constraint2601 = new BitSet(new long[]{0xFC00000000008012L,0x000000000000000FL});
-    public static final BitSet FOLLOW_operator_in_constraint2607 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_constraint2609 = new BitSet(new long[]{0x00000800008003E0L});
-    public static final BitSet FOLLOW_ID_in_constraint2627 = new BitSet(new long[]{0x0006000000008012L});
-    public static final BitSet FOLLOW_enum_constraint_in_constraint2652 = new BitSet(new long[]{0x0006000000008012L});
-    public static final BitSet FOLLOW_literal_constraint_in_constraint2684 = new BitSet(new long[]{0x0006000000008012L});
-    public static final BitSet FOLLOW_retval_constraint_in_constraint2704 = new BitSet(new long[]{0x0006000000008012L});
-    public static final BitSet FOLLOW_set_in_constraint2739 = new BitSet(new long[]{0xFC00000000000000L,0x000000000000000FL});
-    public static final BitSet FOLLOW_operator_in_constraint2761 = new BitSet(new long[]{0x00000800008003E0L});
-    public static final BitSet FOLLOW_ID_in_constraint2773 = new BitSet(new long[]{0x0006000000008012L});
-    public static final BitSet FOLLOW_enum_constraint_in_constraint2801 = new BitSet(new long[]{0x0006000000008012L});
-    public static final BitSet FOLLOW_literal_constraint_in_constraint2836 = new BitSet(new long[]{0x0006000000008012L});
-    public static final BitSet FOLLOW_retval_constraint_in_constraint2858 = new BitSet(new long[]{0x0006000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_constraint2914 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_literal_constraint2941 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INT_in_literal_constraint2952 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FLOAT_in_literal_constraint2965 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BOOL_in_literal_constraint2976 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_43_in_literal_constraint2988 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_enum_constraint3019 = new BitSet(new long[]{0x0000000000080000L});
-    public static final BitSet FOLLOW_19_in_enum_constraint3021 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_enum_constraint3025 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_23_in_retval_constraint3054 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
-    public static final BitSet FOLLOW_paren_chunk_in_retval_constraint3059 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_retval_constraint3062 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_predicate3080 = new BitSet(new long[]{0x0000000200000000L});
-    public static final BitSet FOLLOW_33_in_predicate3082 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_predicate3086 = new BitSet(new long[]{0x0008000000000000L});
-    public static final BitSet FOLLOW_51_in_predicate3088 = new BitSet(new long[]{0x0000000000800000L});
-    public static final BitSet FOLLOW_23_in_predicate3090 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
-    public static final BitSet FOLLOW_paren_chunk_in_predicate3094 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_predicate3096 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_23_in_paren_chunk3142 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
-    public static final BitSet FOLLOW_paren_chunk_in_paren_chunk3146 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_paren_chunk3148 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
-    public static final BitSet FOLLOW_23_in_paren_chunk23219 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
-    public static final BitSet FOLLOW_paren_chunk2_in_paren_chunk23223 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_paren_chunk23225 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
-    public static final BitSet FOLLOW_26_in_curly_chunk3294 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
-    public static final BitSet FOLLOW_curly_chunk_in_curly_chunk3298 = new BitSet(new long[]{0x0000000008000000L});
-    public static final BitSet FOLLOW_27_in_curly_chunk3300 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or3358 = new BitSet(new long[]{0x0001800000000002L});
-    public static final BitSet FOLLOW_set_in_lhs_or3367 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_lhs_or3372 = new BitSet(new long[]{0x01C0000000800020L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or3379 = new BitSet(new long[]{0x0001800000000002L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and3419 = new BitSet(new long[]{0x0030000000000002L});
-    public static final BitSet FOLLOW_set_in_lhs_and3428 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_lhs_and3433 = new BitSet(new long[]{0x01C0000000800020L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and3440 = new BitSet(new long[]{0x0030000000000002L});
-    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary3478 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_not_in_lhs_unary3488 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary3498 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_column_in_lhs_unary3512 = new BitSet(new long[]{0x0000040000000002L});
-    public static final BitSet FOLLOW_from_statement_in_lhs_unary3519 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_23_in_lhs_unary3529 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_lhs_unary3531 = new BitSet(new long[]{0x01C0000000800020L});
-    public static final BitSet FOLLOW_lhs_in_lhs_unary3535 = new BitSet(new long[]{0x0000000000008012L});
-    public static final BitSet FOLLOW_opt_eol_in_lhs_unary3537 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_lhs_unary3539 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_54_in_lhs_exist3570 = new BitSet(new long[]{0x0000000000800020L});
-    public static final BitSet FOLLOW_23_in_lhs_exist3573 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_lhs_column_in_lhs_exist3577 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_lhs_exist3579 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_column_in_lhs_exist3585 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_55_in_lhs_not3615 = new BitSet(new long[]{0x0000000000800020L});
-    public static final BitSet FOLLOW_23_in_lhs_not3618 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_lhs_column_in_lhs_not3622 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_lhs_not3625 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_column_in_lhs_not3631 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_56_in_lhs_eval3657 = new BitSet(new long[]{0x0000000000800000L});
-    public static final BitSet FOLLOW_23_in_lhs_eval3661 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
-    public static final BitSet FOLLOW_paren_chunk2_in_lhs_eval3669 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_lhs_eval3673 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_dotted_name3705 = new BitSet(new long[]{0x0000200000080002L});
-    public static final BitSet FOLLOW_19_in_dotted_name3711 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_ID_in_dotted_name3715 = new BitSet(new long[]{0x0000200000080002L});
-    public static final BitSet FOLLOW_45_in_dotted_name3724 = new BitSet(new long[]{0x0000400000000000L});
-    public static final BitSet FOLLOW_46_in_dotted_name3726 = new BitSet(new long[]{0x0000200000000002L});
-    public static final BitSet FOLLOW_ID_in_argument_name3756 = new BitSet(new long[]{0x0000200000000002L});
-    public static final BitSet FOLLOW_45_in_argument_name3762 = new BitSet(new long[]{0x0000400000000000L});
-    public static final BitSet FOLLOW_46_in_argument_name3764 = new BitSet(new long[]{0x0000200000000002L});
-    public static final BitSet FOLLOW_ID_in_word3792 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_17_in_word3804 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_57_in_word3813 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_31_in_word3825 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_28_in_word3836 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_36_in_word3846 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_37_in_word3854 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_32_in_word3862 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_34_in_word3873 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_29_in_word3884 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_word3898 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_58_in_operator3927 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_59_in_operator3934 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_60_in_operator3941 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_61_in_operator3948 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_62_in_operator3957 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_63_in_operator3964 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_64_in_operator3971 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_65_in_operator3978 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_66_in_operator3985 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_67_in_operator3992 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_43_in_argument_value1966 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_inline_map_in_argument_value1985 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_inline_array_in_argument_value2001 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_26_in_inline_map2041 = new BitSet(new long[]{0x00002800040003E0L});
+    public static final BitSet FOLLOW_argument_value_in_inline_map2059 = new BitSet(new long[]{0x0000100000000000L});
+    public static final BitSet FOLLOW_44_in_inline_map2061 = new BitSet(new long[]{0x00002800040003E0L});
+    public static final BitSet FOLLOW_argument_value_in_inline_map2065 = new BitSet(new long[]{0x0000000009000010L});
+    public static final BitSet FOLLOW_EOL_in_inline_map2108 = new BitSet(new long[]{0x0000000001000000L});
+    public static final BitSet FOLLOW_24_in_inline_map2112 = new BitSet(new long[]{0x00002800040003F0L});
+    public static final BitSet FOLLOW_EOL_in_inline_map2115 = new BitSet(new long[]{0x00002800040003E0L});
+    public static final BitSet FOLLOW_argument_value_in_inline_map2121 = new BitSet(new long[]{0x0000100000000000L});
+    public static final BitSet FOLLOW_44_in_inline_map2123 = new BitSet(new long[]{0x00002800040003E0L});
+    public static final BitSet FOLLOW_argument_value_in_inline_map2127 = new BitSet(new long[]{0x0000000009000010L});
+    public static final BitSet FOLLOW_27_in_inline_map2163 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_45_in_inline_array2207 = new BitSet(new long[]{0x00002800040003E0L});
+    public static final BitSet FOLLOW_argument_value_in_inline_array2211 = new BitSet(new long[]{0x0000400001000010L});
+    public static final BitSet FOLLOW_EOL_in_inline_array2229 = new BitSet(new long[]{0x0000000001000000L});
+    public static final BitSet FOLLOW_24_in_inline_array2232 = new BitSet(new long[]{0x00002800040003F0L});
+    public static final BitSet FOLLOW_EOL_in_inline_array2234 = new BitSet(new long[]{0x00002800040003E0L});
+    public static final BitSet FOLLOW_argument_value_in_inline_array2239 = new BitSet(new long[]{0x0000400001000010L});
+    public static final BitSet FOLLOW_46_in_inline_array2252 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_fact_binding2295 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact_binding2305 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_33_in_fact_binding2307 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact_binding2309 = new BitSet(new long[]{0x0000000000800020L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_binding2313 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_23_in_fact_expression2345 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact_expression2347 = new BitSet(new long[]{0x0000000000800020L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2351 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact_expression2353 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_fact_expression2355 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_fact_expression2366 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact_expression2368 = new BitSet(new long[]{0x0001800000000002L});
+    public static final BitSet FOLLOW_set_in_fact_expression2381 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact_expression2386 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_fact_in_fact_expression2400 = new BitSet(new long[]{0x0001800000000002L});
+    public static final BitSet FOLLOW_dotted_name_in_fact2439 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact2447 = new BitSet(new long[]{0x0000000000800000L});
+    public static final BitSet FOLLOW_23_in_fact2455 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact2458 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_constraints_in_fact2464 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact2483 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_fact2487 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_fact2489 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_opt_eol_in_constraints2521 = new BitSet(new long[]{0x0000000000008032L});
+    public static final BitSet FOLLOW_constraint_in_constraints2526 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_predicate_in_constraints2529 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_constraints2537 = new BitSet(new long[]{0x0000000001000000L});
+    public static final BitSet FOLLOW_24_in_constraints2539 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_constraints2541 = new BitSet(new long[]{0x0000000000008032L});
+    public static final BitSet FOLLOW_constraint_in_constraints2544 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_predicate_in_constraints2547 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_constraints2555 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_opt_eol_in_constraint2574 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_ID_in_constraint2582 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_constraint2584 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_33_in_constraint2586 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_constraint2588 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_ID_in_constraint2598 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_constraint2612 = new BitSet(new long[]{0xFC00000000008012L,0x000000000000000FL});
+    public static final BitSet FOLLOW_operator_in_constraint2618 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_constraint2620 = new BitSet(new long[]{0x00000800008003E0L});
+    public static final BitSet FOLLOW_ID_in_constraint2638 = new BitSet(new long[]{0x0006000000008012L});
+    public static final BitSet FOLLOW_enum_constraint_in_constraint2663 = new BitSet(new long[]{0x0006000000008012L});
+    public static final BitSet FOLLOW_literal_constraint_in_constraint2695 = new BitSet(new long[]{0x0006000000008012L});
+    public static final BitSet FOLLOW_retval_constraint_in_constraint2715 = new BitSet(new long[]{0x0006000000008012L});
+    public static final BitSet FOLLOW_set_in_constraint2750 = new BitSet(new long[]{0xFC00000000000000L,0x000000000000000FL});
+    public static final BitSet FOLLOW_operator_in_constraint2772 = new BitSet(new long[]{0x00000800008003E0L});
+    public static final BitSet FOLLOW_ID_in_constraint2784 = new BitSet(new long[]{0x0006000000008012L});
+    public static final BitSet FOLLOW_enum_constraint_in_constraint2812 = new BitSet(new long[]{0x0006000000008012L});
+    public static final BitSet FOLLOW_literal_constraint_in_constraint2847 = new BitSet(new long[]{0x0006000000008012L});
+    public static final BitSet FOLLOW_retval_constraint_in_constraint2869 = new BitSet(new long[]{0x0006000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_constraint2925 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_literal_constraint2952 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_literal_constraint2963 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_literal_constraint2976 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_literal_constraint2987 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_43_in_literal_constraint2999 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_enum_constraint3030 = new BitSet(new long[]{0x0000000000080000L});
+    public static final BitSet FOLLOW_19_in_enum_constraint3032 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_ID_in_enum_constraint3036 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_23_in_retval_constraint3065 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
+    public static final BitSet FOLLOW_paren_chunk_in_retval_constraint3070 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_retval_constraint3073 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_predicate3091 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_33_in_predicate3093 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_ID_in_predicate3097 = new BitSet(new long[]{0x0008000000000000L});
+    public static final BitSet FOLLOW_51_in_predicate3099 = new BitSet(new long[]{0x0000000000800000L});
+    public static final BitSet FOLLOW_23_in_predicate3101 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
+    public static final BitSet FOLLOW_paren_chunk_in_predicate3105 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_predicate3107 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_23_in_paren_chunk3153 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
+    public static final BitSet FOLLOW_paren_chunk_in_paren_chunk3157 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_paren_chunk3159 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
+    public static final BitSet FOLLOW_23_in_paren_chunk23230 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
+    public static final BitSet FOLLOW_paren_chunk2_in_paren_chunk23234 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_paren_chunk23236 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
+    public static final BitSet FOLLOW_26_in_curly_chunk3305 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
+    public static final BitSet FOLLOW_curly_chunk_in_curly_chunk3309 = new BitSet(new long[]{0x0000000008000000L});
+    public static final BitSet FOLLOW_27_in_curly_chunk3311 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or3369 = new BitSet(new long[]{0x0001800000000002L});
+    public static final BitSet FOLLOW_set_in_lhs_or3378 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_lhs_or3383 = new BitSet(new long[]{0x01C0000000800020L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or3390 = new BitSet(new long[]{0x0001800000000002L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and3430 = new BitSet(new long[]{0x0030000000000002L});
+    public static final BitSet FOLLOW_set_in_lhs_and3439 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_lhs_and3444 = new BitSet(new long[]{0x01C0000000800020L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and3451 = new BitSet(new long[]{0x0030000000000002L});
+    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary3489 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_not_in_lhs_unary3499 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary3509 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_column_in_lhs_unary3523 = new BitSet(new long[]{0x0000040000000002L});
+    public static final BitSet FOLLOW_from_statement_in_lhs_unary3530 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_23_in_lhs_unary3540 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_lhs_unary3542 = new BitSet(new long[]{0x01C0000000800020L});
+    public static final BitSet FOLLOW_lhs_in_lhs_unary3546 = new BitSet(new long[]{0x0000000000008012L});
+    public static final BitSet FOLLOW_opt_eol_in_lhs_unary3548 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_lhs_unary3550 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_54_in_lhs_exist3581 = new BitSet(new long[]{0x0000000000800020L});
+    public static final BitSet FOLLOW_23_in_lhs_exist3584 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_lhs_column_in_lhs_exist3588 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_lhs_exist3590 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_column_in_lhs_exist3596 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_55_in_lhs_not3626 = new BitSet(new long[]{0x0000000000800020L});
+    public static final BitSet FOLLOW_23_in_lhs_not3629 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_lhs_column_in_lhs_not3633 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_lhs_not3636 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_column_in_lhs_not3642 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_56_in_lhs_eval3668 = new BitSet(new long[]{0x0000000000800000L});
+    public static final BitSet FOLLOW_23_in_lhs_eval3672 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x000000000000000FL});
+    public static final BitSet FOLLOW_paren_chunk2_in_lhs_eval3680 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_lhs_eval3684 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_dotted_name3716 = new BitSet(new long[]{0x0000200000080002L});
+    public static final BitSet FOLLOW_19_in_dotted_name3722 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_ID_in_dotted_name3726 = new BitSet(new long[]{0x0000200000080002L});
+    public static final BitSet FOLLOW_45_in_dotted_name3735 = new BitSet(new long[]{0x0000400000000000L});
+    public static final BitSet FOLLOW_46_in_dotted_name3737 = new BitSet(new long[]{0x0000200000000002L});
+    public static final BitSet FOLLOW_ID_in_argument_name3767 = new BitSet(new long[]{0x0000200000000002L});
+    public static final BitSet FOLLOW_45_in_argument_name3773 = new BitSet(new long[]{0x0000400000000000L});
+    public static final BitSet FOLLOW_46_in_argument_name3775 = new BitSet(new long[]{0x0000200000000002L});
+    public static final BitSet FOLLOW_ID_in_word3803 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_17_in_word3815 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_57_in_word3824 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_31_in_word3836 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_word3847 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_36_in_word3857 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_37_in_word3865 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_32_in_word3873 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_34_in_word3884 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_29_in_word3895 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_word3909 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_58_in_operator3938 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_59_in_operator3945 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_60_in_operator3952 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_61_in_operator3959 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_62_in_operator3968 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_63_in_operator3975 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_64_in_operator3982 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_operator3989 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_66_in_operator3996 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_67_in_operator4003 = new BitSet(new long[]{0x0000000000000002L});
 
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/RuleParserLexer.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/RuleParserLexer.java	2006-09-01 09:06:52 UTC (rev 6062)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/RuleParserLexer.java	2006-09-01 11:48:17 UTC (rev 6063)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0ea8 /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g 2006-08-31 10:56:59
+// $ANTLR 3.0ea8 /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g 2006-09-01 12:37:59
 
 	package org.drools.lang;
 
@@ -1510,7 +1510,7 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 54) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1295:17: ( '!' | '@' | '$' | '%' | '^' | '&' | '*' | '_' | '-' | '+' | '?' | '|' | ',' | '{' | '}' | '[' | ']' | '=' | '/' | '(' | ')' | '\'' | '\\' | '||' | '&&' | '<<<' | '++' | '--' | '>>>' | '==' | '+=' | '=+' | '-=' | '=-' | '*=' | '=*' | '/=' | '=/' | '>>=' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1312:17: ( '!' | '@' | '$' | '%' | '^' | '&' | '*' | '_' | '-' | '+' | '?' | '|' | ',' | '{' | '}' | '[' | ']' | '=' | '/' | '(' | ')' | '\'' | '\\' | '||' | '&&' | '<<<' | '++' | '--' | '>>>' | '==' | '+=' | '=+' | '-=' | '=-' | '*=' | '=*' | '/=' | '=/' | '>>=' )
             int alt1=39;
             switch ( input.LA(1) ) {
             case '!':
@@ -1654,7 +1654,7 @@
                     else {
                         if (backtracking>0) {failed=true; return ;}
                         NoViableAltException nvae =
-                            new NoViableAltException("1294:1: MISC : ( \'!\' | \'@\' | \'$\' | \'%\' | \'^\' | \'&\' | \'*\' | \'_\' | \'-\' | \'+\' | \'?\' | \'|\' | \',\' | \'{\' | \'}\' | \'[\' | \']\' | \'=\' | \'/\' | \'(\' | \')\' | \'\\\'\' | \'\\\\\' | \'||\' | \'&&\' | \'<<<\' | \'++\' | \'--\' | \'>>>\' | \'==\' | \'+=\' | \'=+\' | \'-=\' | \'=-\' | \'*=\' | \'=*\' | \'/=\' | \'=/\' | \'>>=\' );", 1, 46, input);
+                            new NoViableAltException("1311:1: MISC : ( \'!\' | \'@\' | \'$\' | \'%\' | \'^\' | \'&\' | \'*\' | \'_\' | \'-\' | \'+\' | \'?\' | \'|\' | \',\' | \'{\' | \'}\' | \'[\' | \']\' | \'=\' | \'/\' | \'(\' | \')\' | \'\\\'\' | \'\\\\\' | \'||\' | \'&&\' | \'<<<\' | \'++\' | \'--\' | \'>>>\' | \'==\' | \'+=\' | \'=+\' | \'-=\' | \'=-\' | \'*=\' | \'=*\' | \'/=\' | \'=/\' | \'>>=\' );", 1, 46, input);
 
                         throw nvae;
                     }
@@ -1662,7 +1662,7 @@
                 else {
                     if (backtracking>0) {failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1294:1: MISC : ( \'!\' | \'@\' | \'$\' | \'%\' | \'^\' | \'&\' | \'*\' | \'_\' | \'-\' | \'+\' | \'?\' | \'|\' | \',\' | \'{\' | \'}\' | \'[\' | \']\' | \'=\' | \'/\' | \'(\' | \')\' | \'\\\'\' | \'\\\\\' | \'||\' | \'&&\' | \'<<<\' | \'++\' | \'--\' | \'>>>\' | \'==\' | \'+=\' | \'=+\' | \'-=\' | \'=-\' | \'*=\' | \'=*\' | \'/=\' | \'=/\' | \'>>=\' );", 1, 25, input);
+                        new NoViableAltException("1311:1: MISC : ( \'!\' | \'@\' | \'$\' | \'%\' | \'^\' | \'&\' | \'*\' | \'_\' | \'-\' | \'+\' | \'?\' | \'|\' | \',\' | \'{\' | \'}\' | \'[\' | \']\' | \'=\' | \'/\' | \'(\' | \')\' | \'\\\'\' | \'\\\\\' | \'||\' | \'&&\' | \'<<<\' | \'++\' | \'--\' | \'>>>\' | \'==\' | \'+=\' | \'=+\' | \'-=\' | \'=-\' | \'*=\' | \'=*\' | \'/=\' | \'=/\' | \'>>=\' );", 1, 25, input);
 
                     throw nvae;
                 }
@@ -1670,175 +1670,175 @@
             default:
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1294:1: MISC : ( \'!\' | \'@\' | \'$\' | \'%\' | \'^\' | \'&\' | \'*\' | \'_\' | \'-\' | \'+\' | \'?\' | \'|\' | \',\' | \'{\' | \'}\' | \'[\' | \']\' | \'=\' | \'/\' | \'(\' | \')\' | \'\\\'\' | \'\\\\\' | \'||\' | \'&&\' | \'<<<\' | \'++\' | \'--\' | \'>>>\' | \'==\' | \'+=\' | \'=+\' | \'-=\' | \'=-\' | \'*=\' | \'=*\' | \'/=\' | \'=/\' | \'>>=\' );", 1, 0, input);
+                    new NoViableAltException("1311:1: MISC : ( \'!\' | \'@\' | \'$\' | \'%\' | \'^\' | \'&\' | \'*\' | \'_\' | \'-\' | \'+\' | \'?\' | \'|\' | \',\' | \'{\' | \'}\' | \'[\' | \']\' | \'=\' | \'/\' | \'(\' | \')\' | \'\\\'\' | \'\\\\\' | \'||\' | \'&&\' | \'<<<\' | \'++\' | \'--\' | \'>>>\' | \'==\' | \'+=\' | \'=+\' | \'-=\' | \'=-\' | \'*=\' | \'=*\' | \'/=\' | \'=/\' | \'>>=\' );", 1, 0, input);
 
                 throw nvae;
             }
 
             switch (alt1) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1295:17: '!'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1312:17: '!'
                     {
                     match('!'); if (failed) return ;
 
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1295:23: '@'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1312:23: '@'
                     {
                     match('@'); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1295:29: '$'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1312:29: '$'
                     {
                     match('$'); if (failed) return ;
 
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1295:35: '%'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1312:35: '%'
                     {
                     match('%'); if (failed) return ;
 
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1295:41: '^'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1312:41: '^'
                     {
                     match('^'); if (failed) return ;
 
                     }
                     break;
                 case 6 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1295:47: '&'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1312:47: '&'
                     {
                     match('&'); if (failed) return ;
 
                     }
                     break;
                 case 7 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1295:53: '*'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1312:53: '*'
                     {
                     match('*'); if (failed) return ;
 
                     }
                     break;
                 case 8 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1295:59: '_'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1312:59: '_'
                     {
                     match('_'); if (failed) return ;
 
                     }
                     break;
                 case 9 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1295:65: '-'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1312:65: '-'
                     {
                     match('-'); if (failed) return ;
 
                     }
                     break;
                 case 10 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1295:71: '+'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1312:71: '+'
                     {
                     match('+'); if (failed) return ;
 
                     }
                     break;
                 case 11 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1295:78: '?'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1312:78: '?'
                     {
                     match('?'); if (failed) return ;
 
                     }
                     break;
                 case 12 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1296:19: '|'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1313:19: '|'
                     {
                     match('|'); if (failed) return ;
 
                     }
                     break;
                 case 13 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1296:25: ','
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1313:25: ','
                     {
                     match(','); if (failed) return ;
 
                     }
                     break;
                 case 14 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1296:31: '{'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1313:31: '{'
                     {
                     match('{'); if (failed) return ;
 
                     }
                     break;
                 case 15 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1296:37: '}'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1313:37: '}'
                     {
                     match('}'); if (failed) return ;
 
                     }
                     break;
                 case 16 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1296:43: '['
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1313:43: '['
                     {
                     match('['); if (failed) return ;
 
                     }
                     break;
                 case 17 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1296:49: ']'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1313:49: ']'
                     {
                     match(']'); if (failed) return ;
 
                     }
                     break;
                 case 18 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1296:55: '='
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1313:55: '='
                     {
                     match('='); if (failed) return ;
 
                     }
                     break;
                 case 19 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1296:61: '/'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1313:61: '/'
                     {
                     match('/'); if (failed) return ;
 
                     }
                     break;
                 case 20 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1296:67: '('
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1313:67: '('
                     {
                     match('('); if (failed) return ;
 
                     }
                     break;
                 case 21 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1296:73: ')'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1313:73: ')'
                     {
                     match(')'); if (failed) return ;
 
                     }
                     break;
                 case 22 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1296:79: '\''
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1313:79: '\''
                     {
                     match('\''); if (failed) return ;
 
                     }
                     break;
                 case 23 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1296:86: '\\'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1313:86: '\\'
                     {
                     match('\\'); if (failed) return ;
 
                     }
                     break;
                 case 24 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1297:19: '||'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1314:19: '||'
                     {
                     match("||"); if (failed) return ;
 
@@ -1846,7 +1846,7 @@
                     }
                     break;
                 case 25 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1297:26: '&&'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1314:26: '&&'
                     {
                     match("&&"); if (failed) return ;
 
@@ -1854,7 +1854,7 @@
                     }
                     break;
                 case 26 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1297:33: '<<<'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1314:33: '<<<'
                     {
                     match("<<<"); if (failed) return ;
 
@@ -1862,7 +1862,7 @@
                     }
                     break;
                 case 27 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1297:41: '++'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1314:41: '++'
                     {
                     match("++"); if (failed) return ;
 
@@ -1870,7 +1870,7 @@
                     }
                     break;
                 case 28 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1297:48: '--'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1314:48: '--'
                     {
                     match("--"); if (failed) return ;
 
@@ -1878,7 +1878,7 @@
                     }
                     break;
                 case 29 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1297:55: '>>>'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1314:55: '>>>'
                     {
                     match(">>>"); if (failed) return ;
 
@@ -1886,7 +1886,7 @@
                     }
                     break;
                 case 30 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1297:63: '=='
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1314:63: '=='
                     {
                     match("=="); if (failed) return ;
 
@@ -1894,7 +1894,7 @@
                     }
                     break;
                 case 31 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1297:70: '+='
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1314:70: '+='
                     {
                     match("+="); if (failed) return ;
 
@@ -1902,7 +1902,7 @@
                     }
                     break;
                 case 32 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1297:77: '=+'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1314:77: '=+'
                     {
                     match("=+"); if (failed) return ;
 
@@ -1910,7 +1910,7 @@
                     }
                     break;
                 case 33 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1297:84: '-='
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1314:84: '-='
                     {
                     match("-="); if (failed) return ;
 
@@ -1918,7 +1918,7 @@
                     }
                     break;
                 case 34 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1297:91: '=-'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1314:91: '=-'
                     {
                     match("=-"); if (failed) return ;
 
@@ -1926,7 +1926,7 @@
                     }
                     break;
                 case 35 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1297:97: '*='
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1314:97: '*='
                     {
                     match("*="); if (failed) return ;
 
@@ -1934,7 +1934,7 @@
                     }
                     break;
                 case 36 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1297:104: '=*'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1314:104: '=*'
                     {
                     match("=*"); if (failed) return ;
 
@@ -1942,7 +1942,7 @@
                     }
                     break;
                 case 37 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1298:19: '/='
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1315:19: '/='
                     {
                     match("/="); if (failed) return ;
 
@@ -1950,7 +1950,7 @@
                     }
                     break;
                 case 38 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1298:26: '=/'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1315:26: '=/'
                     {
                     match("=/"); if (failed) return ;
 
@@ -1958,7 +1958,7 @@
                     }
                     break;
                 case 39 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1298:33: '>>='
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1315:33: '>>='
                     {
                     match(">>="); if (failed) return ;
 
@@ -1986,8 +1986,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 55) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1302:17: ( (' '|'\t'|'\f'))
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1302:17: (' '|'\t'|'\f')
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1319:17: ( (' '|'\t'|'\f'))
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1319:17: (' '|'\t'|'\f')
             {
             if ( input.LA(1)=='\t'||input.LA(1)=='\f'||input.LA(1)==' ' ) {
                 input.consume();
@@ -2025,10 +2025,10 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 56) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1310:17: ( ( ( '\r\n' )=> '\r\n' | '\r' | '\n' ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1310:17: ( ( '\r\n' )=> '\r\n' | '\r' | '\n' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1327:17: ( ( ( '\r\n' )=> '\r\n' | '\r' | '\n' ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1327:17: ( ( '\r\n' )=> '\r\n' | '\r' | '\n' )
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1310:17: ( ( '\r\n' )=> '\r\n' | '\r' | '\n' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1327:17: ( ( '\r\n' )=> '\r\n' | '\r' | '\n' )
             int alt2=3;
             int LA2_0 = input.LA(1);
             if ( LA2_0=='\r' ) {
@@ -2045,13 +2045,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1310:17: ( ( \'\\r\\n\' )=> \'\\r\\n\' | \'\\r\' | \'\\n\' )", 2, 0, input);
+                    new NoViableAltException("1327:17: ( ( \'\\r\\n\' )=> \'\\r\\n\' | \'\\r\' | \'\\n\' )", 2, 0, input);
 
                 throw nvae;
             }
             switch (alt2) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1310:25: ( '\r\n' )=> '\r\n'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1327:25: ( '\r\n' )=> '\r\n'
                     {
 
                     match("\r\n"); if (failed) return ;
@@ -2060,14 +2060,14 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1311:25: '\r'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1328:25: '\r'
                     {
                     match('\r'); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1312:25: '\n'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1329:25: '\n'
                     {
                     match('\n'); if (failed) return ;
 
@@ -2098,10 +2098,10 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 57) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1317:17: ( ( '-' )? ( '0' .. '9' )+ )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1317:17: ( '-' )? ( '0' .. '9' )+
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1334:17: ( ( '-' )? ( '0' .. '9' )+ )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1334:17: ( '-' )? ( '0' .. '9' )+
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1317:17: ( '-' )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1334:17: ( '-' )?
             int alt3=2;
             int LA3_0 = input.LA(1);
             if ( LA3_0=='-' ) {
@@ -2113,13 +2113,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1317:17: ( \'-\' )?", 3, 0, input);
+                    new NoViableAltException("1334:17: ( \'-\' )?", 3, 0, input);
 
                 throw nvae;
             }
             switch (alt3) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1317:18: '-'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1334:18: '-'
                     {
                     match('-'); if (failed) return ;
 
@@ -2128,7 +2128,7 @@
 
             }
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1317:23: ( '0' .. '9' )+
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1334:23: ( '0' .. '9' )+
             int cnt4=0;
             loop4:
             do {
@@ -2141,7 +2141,7 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1317:24: '0' .. '9'
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1334:24: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -2180,10 +2180,10 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 58) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1321:17: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1321:17: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1338:17: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1338:17: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1321:17: ( '-' )?
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1338:17: ( '-' )?
             int alt5=2;
             int LA5_0 = input.LA(1);
             if ( LA5_0=='-' ) {
@@ -2195,13 +2195,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1321:17: ( \'-\' )?", 5, 0, input);
+                    new NoViableAltException("1338:17: ( \'-\' )?", 5, 0, input);
 
                 throw nvae;
             }
             switch (alt5) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1321:18: '-'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1338:18: '-'
                     {
                     match('-'); if (failed) return ;
 
@@ -2210,7 +2210,7 @@
 
             }
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1321:23: ( '0' .. '9' )+
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1338:23: ( '0' .. '9' )+
             int cnt6=0;
             loop6:
             do {
@@ -2223,7 +2223,7 @@
 
                 switch (alt6) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1321:24: '0' .. '9'
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1338:24: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -2241,7 +2241,7 @@
             } while (true);
 
             match('.'); if (failed) return ;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1321:39: ( '0' .. '9' )+
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1338:39: ( '0' .. '9' )+
             int cnt7=0;
             loop7:
             do {
@@ -2254,7 +2254,7 @@
 
                 switch (alt7) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1321:40: '0' .. '9'
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1338:40: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -2293,7 +2293,7 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 59) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1325:17: ( ( '"' ( options {greedy=false; } : . )* '"' ) | ( '\'' ( options {greedy=false; } : . )* '\'' ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1342:17: ( ( '"' ( options {greedy=false; } : . )* '"' ) | ( '\'' ( options {greedy=false; } : . )* '\'' ) )
             int alt10=2;
             int LA10_0 = input.LA(1);
             if ( LA10_0=='"' ) {
@@ -2305,19 +2305,19 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1324:1: STRING : ( ( \'\"\' ( options {greedy=false; } : . )* \'\"\' ) | ( \'\\\'\' ( options {greedy=false; } : . )* \'\\\'\' ) );", 10, 0, input);
+                    new NoViableAltException("1341:1: STRING : ( ( \'\"\' ( options {greedy=false; } : . )* \'\"\' ) | ( \'\\\'\' ( options {greedy=false; } : . )* \'\\\'\' ) );", 10, 0, input);
 
                 throw nvae;
             }
             switch (alt10) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1325:17: ( '"' ( options {greedy=false; } : . )* '"' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1342:17: ( '"' ( options {greedy=false; } : . )* '"' )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1325:17: ( '"' ( options {greedy=false; } : . )* '"' )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1325:18: '"' ( options {greedy=false; } : . )* '"'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1342:17: ( '"' ( options {greedy=false; } : . )* '"' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1342:18: '"' ( options {greedy=false; } : . )* '"'
                     {
                     match('"'); if (failed) return ;
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1325:22: ( options {greedy=false; } : . )*
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1342:22: ( options {greedy=false; } : . )*
                     loop8:
                     do {
                         int alt8=2;
@@ -2332,7 +2332,7 @@
 
                         switch (alt8) {
                     	case 1 :
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1325:49: .
+                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1342:49: .
                     	    {
                     	    matchAny(); if (failed) return ;
 
@@ -2352,13 +2352,13 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1325:61: ( '\'' ( options {greedy=false; } : . )* '\'' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1342:61: ( '\'' ( options {greedy=false; } : . )* '\'' )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1325:61: ( '\'' ( options {greedy=false; } : . )* '\'' )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1325:62: '\'' ( options {greedy=false; } : . )* '\''
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1342:61: ( '\'' ( options {greedy=false; } : . )* '\'' )
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1342:62: '\'' ( options {greedy=false; } : . )* '\''
                     {
                     match('\''); if (failed) return ;
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1325:67: ( options {greedy=false; } : . )*
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1342:67: ( options {greedy=false; } : . )*
                     loop9:
                     do {
                         int alt9=2;
@@ -2373,7 +2373,7 @@
 
                         switch (alt9) {
                     	case 1 :
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1325:94: .
+                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1342:94: .
                     	    {
                     	    matchAny(); if (failed) return ;
 
@@ -2413,10 +2413,10 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 60) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1329:17: ( ( 'true' | 'false' ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1329:17: ( 'true' | 'false' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1346:17: ( ( 'true' | 'false' ) )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1346:17: ( 'true' | 'false' )
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1329:17: ( 'true' | 'false' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1346:17: ( 'true' | 'false' )
             int alt11=2;
             int LA11_0 = input.LA(1);
             if ( LA11_0=='t' ) {
@@ -2428,13 +2428,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1329:17: ( \'true\' | \'false\' )", 11, 0, input);
+                    new NoViableAltException("1346:17: ( \'true\' | \'false\' )", 11, 0, input);
 
                 throw nvae;
             }
             switch (alt11) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1329:18: 'true'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1346:18: 'true'
                     {
                     match("true"); if (failed) return ;
 
@@ -2442,7 +2442,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1329:25: 'false'
+                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1346:25: 'false'
                     {
                     match("false"); if (failed) return ;
 
@@ -2474,8 +2474,8 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 61) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1333:17: ( ('a'..'z'|'A'..'Z'|'_'|'$'|'\u00c0'..'\u00ff') ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff'))* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1333:17: ('a'..'z'|'A'..'Z'|'_'|'$'|'\u00c0'..'\u00ff') ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff'))*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1350:17: ( ('a'..'z'|'A'..'Z'|'_'|'$'|'\u00c0'..'\u00ff') ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff'))* )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1350:17: ('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();
@@ -2488,7 +2488,7 @@
                 recover(mse);    throw mse;
             }
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1333:65: ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff'))*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1350:65: ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff'))*
             loop12:
             do {
                 int alt12=2;
@@ -2500,7 +2500,7 @@
 
                 switch (alt12) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1333:66: ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff')
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1350:66: ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff')
             	    {
             	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z')||(input.LA(1)>='\u00C0' && input.LA(1)<='\u00FF') ) {
             	        input.consume();
@@ -2544,11 +2544,11 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 62) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1339:17: ( '#' ( options {greedy=false; } : . )* EOL )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1339:17: '#' ( options {greedy=false; } : . )* EOL
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1356:17: ( '#' ( options {greedy=false; } : . )* EOL )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1356:17: '#' ( options {greedy=false; } : . )* EOL
             {
             match('#'); if (failed) return ;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1339:21: ( options {greedy=false; } : . )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1356:21: ( options {greedy=false; } : . )*
             loop13:
             do {
                 int alt13=2;
@@ -2566,7 +2566,7 @@
 
                 switch (alt13) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1339:48: .
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1356:48: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -2604,12 +2604,12 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 63) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1345:17: ( '//' ( options {greedy=false; } : . )* EOL )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1345:17: '//' ( options {greedy=false; } : . )* EOL
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1362:17: ( '//' ( options {greedy=false; } : . )* EOL )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1362:17: '//' ( options {greedy=false; } : . )* EOL
             {
             match("//"); if (failed) return ;
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1345:22: ( options {greedy=false; } : . )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1362:22: ( options {greedy=false; } : . )*
             loop14:
             do {
                 int alt14=2;
@@ -2627,7 +2627,7 @@
 
                 switch (alt14) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1345:49: .
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1362:49: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -2665,12 +2665,12 @@
             int charPosition = getCharPositionInLine();
             int channel = Token.DEFAULT_CHANNEL;
             if ( backtracking>0 && alreadyParsedRule(input, 64) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1350:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1350:17: '/*' ( options {greedy=false; } : . )* '*/'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1367:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1367:17: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); if (failed) return ;
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1350:22: ( options {greedy=false; } : . )*
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1367:22: ( options {greedy=false; } : . )*
             loop15:
             do {
                 int alt15=2;
@@ -2693,7 +2693,7 @@
 
                 switch (alt15) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1350:48: .
+            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1367:48: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -3185,8 +3185,8 @@
         int Synpred1_fragment_StartIndex = input.index();
         try {
             if ( backtracking>0 && alreadyParsedRule(input, 66) ) { return ; }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1310:25: ( '\r\n' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1310:27: '\r\n'
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1327:25: ( '\r\n' )
+            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/drl.g:1327:27: '\r\n'
             {
             match("\r\n"); if (failed) return ;
 

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/drl.g
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/drl.g	2006-09-01 09:06:52 UTC (rev 6062)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/drl.g	2006-09-01 11:48:17 UTC (rev 6063)
@@ -272,6 +272,13 @@
         		this.errors.add( new GeneralParseException( "Trailing semi-colon not allowed", offset(line) ) );
         	}
         }
+        
+        private String padConsequenceLine(int diff, String cons) {
+        	for(int i = 0; i < diff; i++) {
+        		cons = cons + '\n';
+        	}
+        	return cons;
+        }
       
 }
 
@@ -487,10 +494,20 @@
 			)
 					
 		)?
-		( opt_eol loc='then' ':'?  opt_eol
-			( options{greedy=false;} : any=.
+		( opt_eol loc='then' ':'?  opt_eol 
+			{int prevLine = loc.getLine()+1; }
+			( options{greedy=false;} : any=. (EOL)*
 				{
+					/*
+					if (prevLine = 0) { prevLine = any.getLine() ;}
+					
+					int lineDif = any.getLine() - prevLine - 1;
+					consequence = padConsequenceLines(lineDif, consequence);
+					*/
+					int diff = any.getLine() - prevLine;
+					consequence = padConsequenceLine(diff, consequence);
 					consequence = consequence + " " + any.getText();
+					prevLine = any.getLine();
 				}
 			)*
 			{

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java	2006-09-01 09:06:52 UTC (rev 6062)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java	2006-09-01 11:48:17 UTC (rev 6063)
@@ -846,6 +846,15 @@
                       third.getLine() );
         assertFalse( this.parser.hasErrors() );
     }
+    
+    public void testLineNumberIncludingCommentsInRHS() throws Exception {
+        parseResource( "test_CommentLineNumbersInConsequence.drl" ).compilation_unit();
+        
+        assertFalse(parser.hasErrors());        
+        String rhs = ((RuleDescr) parser.getPackageDescr().getRules().get( 0 )).getConsequence();
+        //System.out.println(rhs);
+        assertEquals("\n first\n\n\n\n\n\n\n second", rhs);
+    }
 
     public void testMultiBindings() throws Exception {
         final RuleDescr rule = parseResource( "multiple_bindings.drl" ).rule();

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/test_CommentLineNumbersInConsequence.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/test_CommentLineNumbersInConsequence.drl	2006-09-01 09:06:52 UTC (rev 6062)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/test_CommentLineNumbersInConsequence.drl	2006-09-01 11:48:17 UTC (rev 6063)
@@ -0,0 +1,17 @@
+package la
+
+
+rule simple_rule 
+  when
+  	Baz()
+  then
+  	//woot
+  	first
+  	
+  	#
+  	
+  	/* lala
+  	
+  	*/
+  	second  
+end
\ No newline at end of file




More information about the jboss-svn-commits mailing list