[jboss-svn-commits] JBL Code SVN: r16677 - in labs/jbossrules/branches/temporal_rete: drools-compiler/src/main/java/org/drools/lang and 18 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Nov 19 16:23:33 EST 2007


Author: tirelli
Date: 2007-11-19 16:23:33 -0500 (Mon, 19 Nov 2007)
New Revision: 16677

Added:
   labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/OrderEvent.java
   labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/StockTick.java
   labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java
   labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_SimpleEventAssertion.drl
   labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_SimpleTimeWindow.drl
   labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/lang/import_event.drl
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/rule/ImportDeclaration.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/temporal/
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/temporal/PseudoSessionClock.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/temporal/SessionClock.java
Modified:
   labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
   labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
   labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
   labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java
   labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java
   labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/descr/ImportDescr.java
   labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java
   labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaFunctionBuilder.java
   labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaRuleClassBuilder.java
   labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/resources/org/drools/lang/DRL.g
   labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
   labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/ClassObjectType.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/ClassTypeResolver.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/InternalFactHandle.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/InternalRuleBase.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/facttemplates/FactTemplateObjectType.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/Rete.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/rule/Package.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/spi/ObjectType.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/test/java/org/drools/spi/MockObjectType.java
Log:
JBRULES-1332: adding support to event declaration

Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -42,6 +42,7 @@
 import org.drools.lang.descr.PackageDescr;
 import org.drools.lang.descr.QueryDescr;
 import org.drools.lang.descr.RuleDescr;
+import org.drools.rule.ImportDeclaration;
 import org.drools.rule.Package;
 import org.drools.rule.Rule;
 import org.drools.rule.builder.RuleBuildContext;
@@ -130,12 +131,12 @@
         this.classFieldExtractorCache = ClassFieldExtractorCache.getInstance();        
         
         if ( this.pkg != null ) {
-            this.typeResolver = new ClassTypeResolver( this.pkg.getImports(),
+            this.typeResolver = new ClassTypeResolver( new HashSet<String>( this.pkg.getImports().keySet() ),
                                                        this.configuration.getClassLoader() );
             // make an automatic import for the current package
             this.typeResolver.addImport( this.pkg.getName() + ".*" );            
         } else {
-            this.typeResolver = new ClassTypeResolver( new HashSet(),
+            this.typeResolver = new ClassTypeResolver( new HashSet<String>(),
                                                        this.configuration.getClassLoader() );
         }
         
@@ -371,10 +372,11 @@
 
         final List imports = packageDescr.getImports();
         for ( final Iterator it = imports.iterator(); it.hasNext(); ) {
-            String importEntry = ((ImportDescr) it.next()).getTarget();
-            pkg.addImport( importEntry );
-            this.typeResolver.addImport( importEntry );            
-            this.dialectRegistry.addImport( importEntry );
+            ImportDescr importEntry = (ImportDescr) it.next();
+            ImportDeclaration importDecl = new ImportDeclaration( importEntry.getTarget(), importEntry.isEvent() );
+            pkg.addImport( importDecl );
+            this.typeResolver.addImport( importDecl.getTarget() );            
+            this.dialectRegistry.addImport( importDecl.getTarget() );
         }
 
         for ( final Iterator it = packageDescr.getFunctionImports().iterator(); it.hasNext(); ) {

Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2007-10-02 19:31:58
+// $ANTLR 3.0.1 /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2007-10-29 17:23:34
 
 	package org.drools.lang;
 
@@ -10,97 +10,98 @@
 import java.util.Map;
 import java.util.HashMap;
 public class DRLLexer extends Lexer {
-    public static final int COMMA=11;
-    public static final int EXISTS=39;
+    public static final int COMMA=12;
+    public static final int EXISTS=40;
     public static final int T79=79;
-    public static final int AUTO_FOCUS=27;
-    public static final int END=14;
-    public static final int HexDigit=65;
-    public static final int FORALL=42;
-    public static final int TEMPLATE=15;
-    public static final int MISC=71;
-    public static final int FLOAT=55;
+    public static final int AUTO_FOCUS=28;
+    public static final int END=15;
+    public static final int HexDigit=66;
+    public static final int FORALL=43;
+    public static final int TEMPLATE=16;
+    public static final int MISC=72;
+    public static final int FLOAT=56;
     public static final int T74=74;
-    public static final int QUERY=13;
-    public static final int THEN=61;
-    public static final int RULE=16;
-    public static final int INIT=44;
+    public static final int QUERY=14;
+    public static final int THEN=62;
+    public static final int RULE=17;
+    public static final int INIT=45;
     public static final int IMPORT=5;
+    public static final int DATE_EFFECTIVE=20;
     public static final int PACKAGE=4;
-    public static final int DATE_EFFECTIVE=19;
-    public static final int OR=34;
-    public static final int DOT=8;
-    public static final int DOUBLE_PIPE=35;
-    public static final int AND=36;
+    public static final int OR=35;
+    public static final int DOT=9;
+    public static final int DOUBLE_PIPE=36;
+    public static final int AND=37;
     public static final int FUNCTION=6;
-    public static final int GLOBAL=9;
-    public static final int EscapeSequence=64;
-    public static final int DIALECT=32;
-    public static final int INT=25;
-    public static final int LOCK_ON_ACTIVE=33;
-    public static final int DATE_EXPIRES=21;
+    public static final int GLOBAL=10;
+    public static final int EscapeSequence=65;
+    public static final int DIALECT=33;
+    public static final int INT=26;
+    public static final int LOCK_ON_ACTIVE=34;
+    public static final int DATE_EXPIRES=22;
     public static final int T81=81;
-    public static final int LEFT_SQUARE=59;
-    public static final int CONTAINS=49;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=68;
+    public static final int LEFT_SQUARE=60;
+    public static final int CONTAINS=50;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=69;
     public static final int T77=77;
-    public static final int ATTRIBUTES=18;
-    public static final int LEFT_CURLY=57;
-    public static final int RESULT=47;
-    public static final int ID=7;
-    public static final int FROM=38;
-    public static final int LEFT_PAREN=10;
-    public static final int ACTIVATION_GROUP=28;
-    public static final int DOUBLE_AMPER=37;
-    public static final int RIGHT_CURLY=58;
-    public static final int BOOL=23;
-    public static final int EXCLUDES=50;
-    public static final int SOUNDSLIKE=52;
+    public static final int ATTRIBUTES=19;
+    public static final int EVENT=7;
+    public static final int LEFT_CURLY=58;
+    public static final int RESULT=48;
+    public static final int ID=8;
+    public static final int FROM=39;
+    public static final int LEFT_PAREN=11;
+    public static final int ACTIVATION_GROUP=29;
+    public static final int DOUBLE_AMPER=38;
+    public static final int RIGHT_CURLY=59;
+    public static final int BOOL=24;
+    public static final int EXCLUDES=51;
+    public static final int SOUNDSLIKE=53;
     public static final int T73=73;
-    public static final int MEMBEROF=53;
-    public static final int WHEN=17;
+    public static final int MEMBEROF=54;
+    public static final int WHEN=18;
     public static final int T78=78;
-    public static final int RULEFLOW_GROUP=29;
-    public static final int WS=63;
-    public static final int STRING=20;
-    public static final int ACTION=45;
-    public static final int T72=72;
-    public static final int COLLECT=48;
+    public static final int RULEFLOW_GROUP=30;
+    public static final int WS=64;
+    public static final int STRING=21;
+    public static final int ACTION=46;
+    public static final int COLLECT=49;
     public static final int T76=76;
-    public static final int REVERSE=46;
-    public static final int IN=54;
+    public static final int REVERSE=47;
+    public static final int IN=55;
     public static final int T80=80;
-    public static final int ACCUMULATE=43;
-    public static final int NO_LOOP=26;
-    public static final int UnicodeEscape=66;
+    public static final int NO_LOOP=27;
+    public static final int ACCUMULATE=44;
+    public static final int UnicodeEscape=67;
     public static final int T75=75;
-    public static final int DURATION=31;
-    public static final int EVAL=41;
-    public static final int MATCHES=51;
+    public static final int DURATION=32;
+    public static final int EVAL=42;
+    public static final int MATCHES=52;
     public static final int EOF=-1;
-    public static final int AGENDA_GROUP=30;
-    public static final int NULL=56;
-    public static final int EOL=62;
-    public static final int Tokens=82;
-    public static final int SALIENCE=24;
-    public static final int OctalEscape=67;
-    public static final int MULTI_LINE_COMMENT=70;
-    public static final int NOT=40;
-    public static final int RIGHT_PAREN=12;
-    public static final int ENABLED=22;
-    public static final int RIGHT_SQUARE=60;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=69;
+    public static final int AGENDA_GROUP=31;
+    public static final int NULL=57;
+    public static final int EOL=63;
+    public static final int Tokens=83;
+    public static final int T82=82;
+    public static final int SALIENCE=25;
+    public static final int OctalEscape=68;
+    public static final int MULTI_LINE_COMMENT=71;
+    public static final int NOT=41;
+    public static final int RIGHT_PAREN=13;
+    public static final int ENABLED=23;
+    public static final int RIGHT_SQUARE=61;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=70;
     public DRLLexer() {;} 
     public DRLLexer(CharStream input) {
         super(input);
-        ruleMemo = new HashMap[80+1];
+        ruleMemo = new HashMap[81+1];
      }
     public String getGrammarFileName() { return "/home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g"; }
 
-    // $ANTLR start T72
-    public final void mT72() throws RecognitionException {
+    // $ANTLR start T73
+    public final void mT73() throws RecognitionException {
         try {
-            int _type = T72;
+            int _type = T73;
             // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:6:5: ( ';' )
             // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:6:7: ';'
             {
@@ -113,12 +114,12 @@
         finally {
         }
     }
-    // $ANTLR end T72
+    // $ANTLR end T73
 
-    // $ANTLR start T73
-    public final void mT73() throws RecognitionException {
+    // $ANTLR start T74
+    public final void mT74() throws RecognitionException {
         try {
-            int _type = T73;
+            int _type = T74;
             // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:7:5: ( '.*' )
             // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:7:7: '.*'
             {
@@ -132,12 +133,12 @@
         finally {
         }
     }
-    // $ANTLR end T73
+    // $ANTLR end T74
 
-    // $ANTLR start T74
-    public final void mT74() throws RecognitionException {
+    // $ANTLR start T75
+    public final void mT75() throws RecognitionException {
         try {
-            int _type = T74;
+            int _type = T75;
             // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:8:5: ( ':' )
             // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:8:7: ':'
             {
@@ -150,12 +151,12 @@
         finally {
         }
     }
-    // $ANTLR end T74
+    // $ANTLR end T75
 
-    // $ANTLR start T75
-    public final void mT75() throws RecognitionException {
+    // $ANTLR start T76
+    public final void mT76() throws RecognitionException {
         try {
-            int _type = T75;
+            int _type = T76;
             // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:9:5: ( '->' )
             // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:9:7: '->'
             {
@@ -169,12 +170,12 @@
         finally {
         }
     }
-    // $ANTLR end T75
+    // $ANTLR end T76
 
-    // $ANTLR start T76
-    public final void mT76() throws RecognitionException {
+    // $ANTLR start T77
+    public final void mT77() throws RecognitionException {
         try {
-            int _type = T76;
+            int _type = T77;
             // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:10:5: ( '==' )
             // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:10:7: '=='
             {
@@ -188,12 +189,12 @@
         finally {
         }
     }
-    // $ANTLR end T76
+    // $ANTLR end T77
 
-    // $ANTLR start T77
-    public final void mT77() throws RecognitionException {
+    // $ANTLR start T78
+    public final void mT78() throws RecognitionException {
         try {
-            int _type = T77;
+            int _type = T78;
             // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:11:5: ( '>' )
             // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:11:7: '>'
             {
@@ -206,12 +207,12 @@
         finally {
         }
     }
-    // $ANTLR end T77
+    // $ANTLR end T78
 
-    // $ANTLR start T78
-    public final void mT78() throws RecognitionException {
+    // $ANTLR start T79
+    public final void mT79() throws RecognitionException {
         try {
-            int _type = T78;
+            int _type = T79;
             // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:12:5: ( '>=' )
             // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:12:7: '>='
             {
@@ -225,12 +226,12 @@
         finally {
         }
     }
-    // $ANTLR end T78
+    // $ANTLR end T79
 
-    // $ANTLR start T79
-    public final void mT79() throws RecognitionException {
+    // $ANTLR start T80
+    public final void mT80() throws RecognitionException {
         try {
-            int _type = T79;
+            int _type = T80;
             // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:13:5: ( '<' )
             // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:13:7: '<'
             {
@@ -243,12 +244,12 @@
         finally {
         }
     }
-    // $ANTLR end T79
+    // $ANTLR end T80
 
-    // $ANTLR start T80
-    public final void mT80() throws RecognitionException {
+    // $ANTLR start T81
+    public final void mT81() throws RecognitionException {
         try {
-            int _type = T80;
+            int _type = T81;
             // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:14:5: ( '<=' )
             // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:14:7: '<='
             {
@@ -262,12 +263,12 @@
         finally {
         }
     }
-    // $ANTLR end T80
+    // $ANTLR end T81
 
-    // $ANTLR start T81
-    public final void mT81() throws RecognitionException {
+    // $ANTLR start T82
+    public final void mT82() throws RecognitionException {
         try {
-            int _type = T81;
+            int _type = T82;
             // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:15:5: ( '!=' )
             // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:15:7: '!='
             {
@@ -281,16 +282,16 @@
         finally {
         }
     }
-    // $ANTLR end T81
+    // $ANTLR end T82
 
     // $ANTLR start WS
     public final void mWS() throws RecognitionException {
         try {
             int _type = WS;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1690:9: ( ( ' ' | '\\t' | '\\f' | EOL )+ )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1690:17: ( ' ' | '\\t' | '\\f' | EOL )+
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1707:9: ( ( ' ' | '\\t' | '\\f' | EOL )+ )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1707:17: ( ' ' | '\\t' | '\\f' | EOL )+
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1690:17: ( ' ' | '\\t' | '\\f' | EOL )+
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1707:17: ( ' ' | '\\t' | '\\f' | EOL )+
             int cnt1=0;
             loop1:
             do {
@@ -322,28 +323,28 @@
 
                 switch (alt1) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1690:19: ' '
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1707:19: ' '
             	    {
             	    match(' '); if (failed) return ;
 
             	    }
             	    break;
             	case 2 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1691:19: '\\t'
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1708:19: '\\t'
             	    {
             	    match('\t'); if (failed) return ;
 
             	    }
             	    break;
             	case 3 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1692:19: '\\f'
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1709:19: '\\f'
             	    {
             	    match('\f'); if (failed) return ;
 
             	    }
             	    break;
             	case 4 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1693:19: EOL
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1710:19: EOL
             	    {
             	    mEOL(); if (failed) return ;
 
@@ -376,10 +377,10 @@
     // $ANTLR start EOL
     public final void mEOL() throws RecognitionException {
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1699:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1700:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1716:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1717:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1700:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1717:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             int alt2=3;
             int LA2_0 = input.LA(1);
 
@@ -398,13 +399,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1700:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )", 2, 0, input);
+                    new NoViableAltException("1717:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )", 2, 0, input);
 
                 throw nvae;
             }
             switch (alt2) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1700:14: ( '\\r\\n' )=> '\\r\\n'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1717:14: ( '\\r\\n' )=> '\\r\\n'
                     {
                     match("\r\n"); if (failed) return ;
 
@@ -412,14 +413,14 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:25: '\\r'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1718:25: '\\r'
                     {
                     match('\r'); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1702:25: '\\n'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1719:25: '\\n'
                     {
                     match('\n'); if (failed) return ;
 
@@ -441,10 +442,10 @@
     public final void mINT() throws RecognitionException {
         try {
             int _type = INT;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1707:2: ( ( '-' )? ( '0' .. '9' )+ )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1707:4: ( '-' )? ( '0' .. '9' )+
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1724:2: ( ( '-' )? ( '0' .. '9' )+ )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1724:4: ( '-' )? ( '0' .. '9' )+
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1707:4: ( '-' )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1724:4: ( '-' )?
             int alt3=2;
             int LA3_0 = input.LA(1);
 
@@ -453,7 +454,7 @@
             }
             switch (alt3) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1707:5: '-'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1724:5: '-'
                     {
                     match('-'); if (failed) return ;
 
@@ -462,7 +463,7 @@
 
             }
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1707:10: ( '0' .. '9' )+
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1724:10: ( '0' .. '9' )+
             int cnt4=0;
             loop4:
             do {
@@ -476,7 +477,7 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1707:11: '0' .. '9'
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1724:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -507,10 +508,10 @@
     public final void mFLOAT() throws RecognitionException {
         try {
             int _type = FLOAT;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1711:2: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1711:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:2: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1711:4: ( '-' )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:4: ( '-' )?
             int alt5=2;
             int LA5_0 = input.LA(1);
 
@@ -519,7 +520,7 @@
             }
             switch (alt5) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1711:5: '-'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:5: '-'
                     {
                     match('-'); if (failed) return ;
 
@@ -528,7 +529,7 @@
 
             }
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1711:10: ( '0' .. '9' )+
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:10: ( '0' .. '9' )+
             int cnt6=0;
             loop6:
             do {
@@ -542,7 +543,7 @@
 
                 switch (alt6) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1711:11: '0' .. '9'
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -560,7 +561,7 @@
             } while (true);
 
             match('.'); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1711:26: ( '0' .. '9' )+
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:26: ( '0' .. '9' )+
             int cnt7=0;
             loop7:
             do {
@@ -574,7 +575,7 @@
 
                 switch (alt7) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1711:27: '0' .. '9'
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:27: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -605,7 +606,7 @@
     public final void mSTRING() throws RecognitionException {
         try {
             int _type = STRING;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1715:5: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1732:5: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -618,19 +619,19 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1714:1: STRING : ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) );", 10, 0, input);
+                    new NoViableAltException("1731:1: STRING : ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) );", 10, 0, input);
 
                 throw nvae;
             }
             switch (alt10) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1715:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1732:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
                     {
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1715:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1715:9: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1732:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1732:9: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
                     {
                     match('\"'); if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1715:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1732:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
                     loop8:
                     do {
                         int alt8=3;
@@ -646,14 +647,14 @@
 
                         switch (alt8) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1715:15: EscapeSequence
+                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1732:15: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1715:32: ~ ( '\\\\' | '\"' )
+                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1732:32: ~ ( '\\\\' | '\"' )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
                     	        input.consume();
@@ -683,13 +684,13 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1716:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1733:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
                     {
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1716:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1716:9: '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\''
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1733:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1733:9: '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\''
                     {
                     match('\''); if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1716:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1733:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
                     loop9:
                     do {
                         int alt9=3;
@@ -705,14 +706,14 @@
 
                         switch (alt9) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1716:16: EscapeSequence
+                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1733:16: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1716:33: ~ ( '\\\\' | '\\'' )
+                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1733:33: ~ ( '\\\\' | '\\'' )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
                     	        input.consume();
@@ -753,8 +754,8 @@
     // $ANTLR start HexDigit
     public final void mHexDigit() throws RecognitionException {
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1720:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1720:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1737:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1737:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
             {
             if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||(input.LA(1)>='a' && input.LA(1)<='f') ) {
                 input.consume();
@@ -779,7 +780,7 @@
     // $ANTLR start EscapeSequence
     public final void mEscapeSequence() throws RecognitionException {
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1724:5: ( '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' ) | UnicodeEscape | OctalEscape )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1741:5: ( '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' ) | UnicodeEscape | OctalEscape )
             int alt11=3;
             int LA11_0 = input.LA(1);
 
@@ -851,7 +852,7 @@
                 default:
                     if (backtracking>0) {failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1722:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' ) | UnicodeEscape | OctalEscape );", 11, 1, input);
+                        new NoViableAltException("1739:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' ) | UnicodeEscape | OctalEscape );", 11, 1, input);
 
                     throw nvae;
                 }
@@ -860,13 +861,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1722:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' ) | UnicodeEscape | OctalEscape );", 11, 0, input);
+                    new NoViableAltException("1739:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' ) | UnicodeEscape | OctalEscape );", 11, 0, input);
 
                 throw nvae;
             }
             switch (alt11) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1724:9: '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1741:9: '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' )
                     {
                     match('\\'); if (failed) return ;
                     if ( input.LA(1)=='\"'||input.LA(1)=='$'||(input.LA(1)>='&' && input.LA(1)<='+')||(input.LA(1)>='-' && input.LA(1)<='.')||input.LA(1)=='?'||(input.LA(1)>='A' && input.LA(1)<='B')||(input.LA(1)>='D' && input.LA(1)<='E')||input.LA(1)=='G'||input.LA(1)=='Q'||input.LA(1)=='S'||input.LA(1)=='W'||(input.LA(1)>='Z' && input.LA(1)<='^')||(input.LA(1)>='a' && input.LA(1)<='f')||(input.LA(1)>='n' && input.LA(1)<='p')||(input.LA(1)>='r' && input.LA(1)<='t')||(input.LA(1)>='w' && input.LA(1)<='x')||(input.LA(1)>='z' && input.LA(1)<='}') ) {
@@ -884,14 +885,14 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1728:9: UnicodeEscape
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1745:9: UnicodeEscape
                     {
                     mUnicodeEscape(); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1729:9: OctalEscape
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1746:9: OctalEscape
                     {
                     mOctalEscape(); if (failed) return ;
 
@@ -908,7 +909,7 @@
     // $ANTLR start OctalEscape
     public final void mOctalEscape() throws RecognitionException {
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1734:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1751:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
             int alt12=3;
             int LA12_0 = input.LA(1);
 
@@ -942,7 +943,7 @@
                 else {
                     if (backtracking>0) {failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1732:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 1, input);
+                        new NoViableAltException("1749:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 1, input);
 
                     throw nvae;
                 }
@@ -950,31 +951,31 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1732:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 0, input);
+                    new NoViableAltException("1749:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 0, input);
 
                 throw nvae;
             }
             switch (alt12) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1734:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1751:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1734:14: ( '0' .. '3' )
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1734:15: '0' .. '3'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1751:14: ( '0' .. '3' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1751:15: '0' .. '3'
                     {
                     matchRange('0','3'); if (failed) return ;
 
                     }
 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1734:25: ( '0' .. '7' )
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1734:26: '0' .. '7'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1751:25: ( '0' .. '7' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1751:26: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
                     }
 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1734:36: ( '0' .. '7' )
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1734:37: '0' .. '7'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1751:36: ( '0' .. '7' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1751:37: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
@@ -984,18 +985,18 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1735:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1752:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1735:14: ( '0' .. '7' )
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1735:15: '0' .. '7'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1752:14: ( '0' .. '7' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1752:15: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
                     }
 
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1735:25: ( '0' .. '7' )
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1735:26: '0' .. '7'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1752:25: ( '0' .. '7' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1752:26: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
@@ -1005,11 +1006,11 @@
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1736:9: '\\\\' ( '0' .. '7' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1753:9: '\\\\' ( '0' .. '7' )
                     {
                     match('\\'); if (failed) return ;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1736:14: ( '0' .. '7' )
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1736:15: '0' .. '7'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1753:14: ( '0' .. '7' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1753:15: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
@@ -1029,8 +1030,8 @@
     // $ANTLR start UnicodeEscape
     public final void mUnicodeEscape() throws RecognitionException {
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1741:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1741:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1758:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1758:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
             {
             match('\\'); if (failed) return ;
             match('u'); if (failed) return ;
@@ -1051,10 +1052,10 @@
     public final void mBOOL() throws RecognitionException {
         try {
             int _type = BOOL;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1745:2: ( ( 'true' | 'false' ) )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1745:4: ( 'true' | 'false' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1762:2: ( ( 'true' | 'false' ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1762:4: ( 'true' | 'false' )
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1745:4: ( 'true' | 'false' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1762:4: ( 'true' | 'false' )
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -1067,13 +1068,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1745:4: ( 'true' | 'false' )", 13, 0, input);
+                    new NoViableAltException("1762:4: ( 'true' | 'false' )", 13, 0, input);
 
                 throw nvae;
             }
             switch (alt13) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1745:5: 'true'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1762:5: 'true'
                     {
                     match("true"); if (failed) return ;
 
@@ -1081,7 +1082,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1745:12: 'false'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1762:12: 'false'
                     {
                     match("false"); if (failed) return ;
 
@@ -1105,8 +1106,8 @@
     public final void mPACKAGE() throws RecognitionException {
         try {
             int _type = PACKAGE;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1748:9: ( 'package' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1748:11: 'package'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1765:9: ( 'package' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1765:11: 'package'
             {
             match("package"); if (failed) return ;
 
@@ -1124,8 +1125,8 @@
     public final void mIMPORT() throws RecognitionException {
         try {
             int _type = IMPORT;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1750:8: ( 'import' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1750:10: 'import'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1767:8: ( 'import' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1767:10: 'import'
             {
             match("import"); if (failed) return ;
 
@@ -1143,8 +1144,8 @@
     public final void mFUNCTION() throws RecognitionException {
         try {
             int _type = FUNCTION;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1752:10: ( 'function' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1752:12: 'function'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1769:10: ( 'function' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1769:12: 'function'
             {
             match("function"); if (failed) return ;
 
@@ -1158,12 +1159,31 @@
     }
     // $ANTLR end FUNCTION
 
+    // $ANTLR start EVENT
+    public final void mEVENT() throws RecognitionException {
+        try {
+            int _type = EVENT;
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1771:7: ( 'event' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1771:10: 'event'
+            {
+            match("event"); if (failed) return ;
+
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end EVENT
+
     // $ANTLR start GLOBAL
     public final void mGLOBAL() throws RecognitionException {
         try {
             int _type = GLOBAL;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1754:8: ( 'global' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1754:10: 'global'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1773:8: ( 'global' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1773:10: 'global'
             {
             match("global"); if (failed) return ;
 
@@ -1181,8 +1201,8 @@
     public final void mRULE() throws RecognitionException {
         try {
             int _type = RULE;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1756:9: ( 'rule' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1756:11: 'rule'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1775:9: ( 'rule' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1775:11: 'rule'
             {
             match("rule"); if (failed) return ;
 
@@ -1200,8 +1220,8 @@
     public final void mQUERY() throws RecognitionException {
         try {
             int _type = QUERY;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1758:7: ( 'query' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1758:9: 'query'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1777:7: ( 'query' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1777:9: 'query'
             {
             match("query"); if (failed) return ;
 
@@ -1219,8 +1239,8 @@
     public final void mTEMPLATE() throws RecognitionException {
         try {
             int _type = TEMPLATE;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1760:10: ( 'template' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1760:12: 'template'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1779:10: ( 'template' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1779:12: 'template'
             {
             match("template"); if (failed) return ;
 
@@ -1238,8 +1258,8 @@
     public final void mATTRIBUTES() throws RecognitionException {
         try {
             int _type = ATTRIBUTES;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1762:12: ( 'attributes' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1762:14: 'attributes'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1781:12: ( 'attributes' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1781:14: 'attributes'
             {
             match("attributes"); if (failed) return ;
 
@@ -1257,8 +1277,8 @@
     public final void mDATE_EFFECTIVE() throws RecognitionException {
         try {
             int _type = DATE_EFFECTIVE;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1765:2: ( 'date-effective' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1765:4: 'date-effective'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1784:2: ( 'date-effective' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1784:4: 'date-effective'
             {
             match("date-effective"); if (failed) return ;
 
@@ -1276,8 +1296,8 @@
     public final void mDATE_EXPIRES() throws RecognitionException {
         try {
             int _type = DATE_EXPIRES;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1768:2: ( 'date-expires' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1768:4: 'date-expires'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1787:2: ( 'date-expires' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1787:4: 'date-expires'
             {
             match("date-expires"); if (failed) return ;
 
@@ -1295,8 +1315,8 @@
     public final void mENABLED() throws RecognitionException {
         try {
             int _type = ENABLED;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1770:9: ( 'enabled' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1770:11: 'enabled'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1789:9: ( 'enabled' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1789:11: 'enabled'
             {
             match("enabled"); if (failed) return ;
 
@@ -1314,8 +1334,8 @@
     public final void mSALIENCE() throws RecognitionException {
         try {
             int _type = SALIENCE;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1773:2: ( 'salience' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1773:4: 'salience'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1792:2: ( 'salience' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1792:4: 'salience'
             {
             match("salience"); if (failed) return ;
 
@@ -1333,8 +1353,8 @@
     public final void mNO_LOOP() throws RecognitionException {
         try {
             int _type = NO_LOOP;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1775:9: ( 'no-loop' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1775:11: 'no-loop'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1794:9: ( 'no-loop' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1794:11: 'no-loop'
             {
             match("no-loop"); if (failed) return ;
 
@@ -1352,8 +1372,8 @@
     public final void mAUTO_FOCUS() throws RecognitionException {
         try {
             int _type = AUTO_FOCUS;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1778:2: ( 'auto-focus' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1778:4: 'auto-focus'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1797:2: ( 'auto-focus' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1797:4: 'auto-focus'
             {
             match("auto-focus"); if (failed) return ;
 
@@ -1371,8 +1391,8 @@
     public final void mACTIVATION_GROUP() throws RecognitionException {
         try {
             int _type = ACTIVATION_GROUP;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1781:2: ( 'activation-group' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1781:4: 'activation-group'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1800:2: ( 'activation-group' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1800:4: 'activation-group'
             {
             match("activation-group"); if (failed) return ;
 
@@ -1390,8 +1410,8 @@
     public final void mAGENDA_GROUP() throws RecognitionException {
         try {
             int _type = AGENDA_GROUP;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1784:2: ( 'agenda-group' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1784:4: 'agenda-group'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1803:2: ( 'agenda-group' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1803:4: 'agenda-group'
             {
             match("agenda-group"); if (failed) return ;
 
@@ -1409,8 +1429,8 @@
     public final void mDIALECT() throws RecognitionException {
         try {
             int _type = DIALECT;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1787:2: ( 'dialect' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1787:4: 'dialect'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1806:2: ( 'dialect' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1806:4: 'dialect'
             {
             match("dialect"); if (failed) return ;
 
@@ -1428,8 +1448,8 @@
     public final void mRULEFLOW_GROUP() throws RecognitionException {
         try {
             int _type = RULEFLOW_GROUP;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1790:2: ( 'ruleflow-group' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1790:4: 'ruleflow-group'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1809:2: ( 'ruleflow-group' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1809:4: 'ruleflow-group'
             {
             match("ruleflow-group"); if (failed) return ;
 
@@ -1447,8 +1467,8 @@
     public final void mDURATION() throws RecognitionException {
         try {
             int _type = DURATION;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1793:2: ( 'duration' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1793:4: 'duration'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1812:2: ( 'duration' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1812:4: 'duration'
             {
             match("duration"); if (failed) return ;
 
@@ -1466,8 +1486,8 @@
     public final void mLOCK_ON_ACTIVE() throws RecognitionException {
         try {
             int _type = LOCK_ON_ACTIVE;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1796:2: ( 'lock-on-active' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1796:4: 'lock-on-active'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1815:2: ( 'lock-on-active' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1815:4: 'lock-on-active'
             {
             match("lock-on-active"); if (failed) return ;
 
@@ -1485,8 +1505,8 @@
     public final void mFROM() throws RecognitionException {
         try {
             int _type = FROM;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1798:6: ( 'from' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1798:8: 'from'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1817:6: ( 'from' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1817:8: 'from'
             {
             match("from"); if (failed) return ;
 
@@ -1504,8 +1524,8 @@
     public final void mACCUMULATE() throws RecognitionException {
         try {
             int _type = ACCUMULATE;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1801:2: ( 'accumulate' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1801:4: 'accumulate'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1820:2: ( 'accumulate' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1820:4: 'accumulate'
             {
             match("accumulate"); if (failed) return ;
 
@@ -1523,8 +1543,8 @@
     public final void mINIT() throws RecognitionException {
         try {
             int _type = INIT;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1803:6: ( 'init' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1803:8: 'init'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1822:6: ( 'init' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1822:8: 'init'
             {
             match("init"); if (failed) return ;
 
@@ -1542,8 +1562,8 @@
     public final void mACTION() throws RecognitionException {
         try {
             int _type = ACTION;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1805:8: ( 'action' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1805:10: 'action'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1824:8: ( 'action' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1824:10: 'action'
             {
             match("action"); if (failed) return ;
 
@@ -1561,8 +1581,8 @@
     public final void mREVERSE() throws RecognitionException {
         try {
             int _type = REVERSE;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1807:9: ( 'reverse' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1807:11: 'reverse'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1826:9: ( 'reverse' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1826:11: 'reverse'
             {
             match("reverse"); if (failed) return ;
 
@@ -1580,8 +1600,8 @@
     public final void mRESULT() throws RecognitionException {
         try {
             int _type = RESULT;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1809:8: ( 'result' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1809:10: 'result'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1828:8: ( 'result' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1828:10: 'result'
             {
             match("result"); if (failed) return ;
 
@@ -1599,8 +1619,8 @@
     public final void mCOLLECT() throws RecognitionException {
         try {
             int _type = COLLECT;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1811:9: ( 'collect' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1811:11: 'collect'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1830:9: ( 'collect' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1830:11: 'collect'
             {
             match("collect"); if (failed) return ;
 
@@ -1618,8 +1638,8 @@
     public final void mOR() throws RecognitionException {
         try {
             int _type = OR;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1813:4: ( 'or' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1813:6: 'or'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1832:4: ( 'or' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1832:6: 'or'
             {
             match("or"); if (failed) return ;
 
@@ -1637,8 +1657,8 @@
     public final void mAND() throws RecognitionException {
         try {
             int _type = AND;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1815:5: ( 'and' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1815:7: 'and'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1834:5: ( 'and' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1834:7: 'and'
             {
             match("and"); if (failed) return ;
 
@@ -1656,8 +1676,8 @@
     public final void mCONTAINS() throws RecognitionException {
         try {
             int _type = CONTAINS;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1818:2: ( 'contains' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1818:4: 'contains'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1837:2: ( 'contains' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1837:4: 'contains'
             {
             match("contains"); if (failed) return ;
 
@@ -1675,8 +1695,8 @@
     public final void mEXCLUDES() throws RecognitionException {
         try {
             int _type = EXCLUDES;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1821:2: ( 'excludes' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1821:4: 'excludes'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1840:2: ( 'excludes' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1840:4: 'excludes'
             {
             match("excludes"); if (failed) return ;
 
@@ -1694,8 +1714,8 @@
     public final void mMEMBEROF() throws RecognitionException {
         try {
             int _type = MEMBEROF;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1824:2: ( 'memberOf' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1824:4: 'memberOf'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1843:2: ( 'memberOf' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1843:4: 'memberOf'
             {
             match("memberOf"); if (failed) return ;
 
@@ -1713,8 +1733,8 @@
     public final void mMATCHES() throws RecognitionException {
         try {
             int _type = MATCHES;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1826:9: ( 'matches' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1826:11: 'matches'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1845:9: ( 'matches' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1845:11: 'matches'
             {
             match("matches"); if (failed) return ;
 
@@ -1732,8 +1752,8 @@
     public final void mSOUNDSLIKE() throws RecognitionException {
         try {
             int _type = SOUNDSLIKE;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1828:12: ( 'soundslike' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1828:14: 'soundslike'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1847:12: ( 'soundslike' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1847:14: 'soundslike'
             {
             match("soundslike"); if (failed) return ;
 
@@ -1751,8 +1771,8 @@
     public final void mIN() throws RecognitionException {
         try {
             int _type = IN;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1830:4: ( 'in' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1830:6: 'in'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1849:4: ( 'in' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1849:6: 'in'
             {
             match("in"); if (failed) return ;
 
@@ -1770,8 +1790,8 @@
     public final void mNULL() throws RecognitionException {
         try {
             int _type = NULL;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1832:6: ( 'null' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1832:8: 'null'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1851:6: ( 'null' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1851:8: 'null'
             {
             match("null"); if (failed) return ;
 
@@ -1789,8 +1809,8 @@
     public final void mEXISTS() throws RecognitionException {
         try {
             int _type = EXISTS;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1834:8: ( 'exists' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1834:10: 'exists'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1853:8: ( 'exists' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1853:10: 'exists'
             {
             match("exists"); if (failed) return ;
 
@@ -1808,8 +1828,8 @@
     public final void mNOT() throws RecognitionException {
         try {
             int _type = NOT;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1836:5: ( 'not' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1836:7: 'not'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1855:5: ( 'not' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1855:7: 'not'
             {
             match("not"); if (failed) return ;
 
@@ -1827,8 +1847,8 @@
     public final void mEVAL() throws RecognitionException {
         try {
             int _type = EVAL;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1838:6: ( 'eval' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1838:8: 'eval'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1857:6: ( 'eval' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1857:8: 'eval'
             {
             match("eval"); if (failed) return ;
 
@@ -1846,8 +1866,8 @@
     public final void mFORALL() throws RecognitionException {
         try {
             int _type = FORALL;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1840:8: ( 'forall' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1840:10: 'forall'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1859:8: ( 'forall' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1859:10: 'forall'
             {
             match("forall"); if (failed) return ;
 
@@ -1865,8 +1885,8 @@
     public final void mWHEN() throws RecognitionException {
         try {
             int _type = WHEN;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1842:9: ( 'when' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1842:11: 'when'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1861:9: ( 'when' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1861:11: 'when'
             {
             match("when"); if (failed) return ;
 
@@ -1884,8 +1904,8 @@
     public final void mTHEN() throws RecognitionException {
         try {
             int _type = THEN;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1844:6: ( 'then' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1844:12: 'then'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1863:6: ( 'then' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1863:12: 'then'
             {
             match("then"); if (failed) return ;
 
@@ -1903,8 +1923,8 @@
     public final void mEND() throws RecognitionException {
         try {
             int _type = END;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1846:9: ( 'end' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1846:11: 'end'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1865:9: ( 'end' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1865:11: 'end'
             {
             match("end"); if (failed) return ;
 
@@ -1922,8 +1942,8 @@
     public final void mID() throws RecognitionException {
         try {
             int _type = ID;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1849:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1849:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1868:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1868:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
             {
             if ( input.LA(1)=='$'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z')||(input.LA(1)>='\u00C0' && input.LA(1)<='\u00FF') ) {
                 input.consume();
@@ -1936,7 +1956,7 @@
                 recover(mse);    throw mse;
             }
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1849:50: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1868:50: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
             loop14:
             do {
                 int alt14=2;
@@ -1985,8 +2005,8 @@
     public final void mLEFT_PAREN() throws RecognitionException {
         try {
             int _type = LEFT_PAREN;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1853:9: ( '(' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1853:11: '('
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1872:9: ( '(' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1872:11: '('
             {
             match('('); if (failed) return ;
 
@@ -2003,8 +2023,8 @@
     public final void mRIGHT_PAREN() throws RecognitionException {
         try {
             int _type = RIGHT_PAREN;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1857:9: ( ')' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1857:11: ')'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1876:9: ( ')' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1876:11: ')'
             {
             match(')'); if (failed) return ;
 
@@ -2021,8 +2041,8 @@
     public final void mLEFT_SQUARE() throws RecognitionException {
         try {
             int _type = LEFT_SQUARE;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1861:9: ( '[' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1861:11: '['
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1880:9: ( '[' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1880:11: '['
             {
             match('['); if (failed) return ;
 
@@ -2039,8 +2059,8 @@
     public final void mRIGHT_SQUARE() throws RecognitionException {
         try {
             int _type = RIGHT_SQUARE;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1865:9: ( ']' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1865:11: ']'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1884:9: ( ']' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1884:11: ']'
             {
             match(']'); if (failed) return ;
 
@@ -2057,8 +2077,8 @@
     public final void mLEFT_CURLY() throws RecognitionException {
         try {
             int _type = LEFT_CURLY;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1869:9: ( '{' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1869:11: '{'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1888:9: ( '{' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1888:11: '{'
             {
             match('{'); if (failed) return ;
 
@@ -2075,8 +2095,8 @@
     public final void mRIGHT_CURLY() throws RecognitionException {
         try {
             int _type = RIGHT_CURLY;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1873:9: ( '}' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1873:11: '}'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1892:9: ( '}' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1892:11: '}'
             {
             match('}'); if (failed) return ;
 
@@ -2093,8 +2113,8 @@
     public final void mCOMMA() throws RecognitionException {
         try {
             int _type = COMMA;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1876:7: ( ',' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1876:9: ','
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1895:7: ( ',' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1895:9: ','
             {
             match(','); if (failed) return ;
 
@@ -2111,8 +2131,8 @@
     public final void mDOT() throws RecognitionException {
         try {
             int _type = DOT;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1879:5: ( '.' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1879:7: '.'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1898:5: ( '.' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1898:7: '.'
             {
             match('.'); if (failed) return ;
 
@@ -2129,8 +2149,8 @@
     public final void mDOUBLE_AMPER() throws RecognitionException {
         try {
             int _type = DOUBLE_AMPER;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1883:2: ( '&&' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1883:4: '&&'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1902:2: ( '&&' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1902:4: '&&'
             {
             match("&&"); if (failed) return ;
 
@@ -2148,8 +2168,8 @@
     public final void mDOUBLE_PIPE() throws RecognitionException {
         try {
             int _type = DOUBLE_PIPE;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1887:2: ( '||' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1887:4: '||'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1906:2: ( '||' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1906:4: '||'
             {
             match("||"); if (failed) return ;
 
@@ -2167,11 +2187,11 @@
     public final void mSH_STYLE_SINGLE_LINE_COMMENT() throws RecognitionException {
         try {
             int _type = SH_STYLE_SINGLE_LINE_COMMENT;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1891:2: ( '#' ( options {greedy=false; } : . )* EOL )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1891:4: '#' ( options {greedy=false; } : . )* EOL
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1910:2: ( '#' ( options {greedy=false; } : . )* EOL )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1910:4: '#' ( options {greedy=false; } : . )* EOL
             {
             match('#'); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1891:8: ( options {greedy=false; } : . )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1910:8: ( options {greedy=false; } : . )*
             loop15:
             do {
                 int alt15=2;
@@ -2190,7 +2210,7 @@
 
                 switch (alt15) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1891:35: .
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1910:35: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -2220,12 +2240,12 @@
     public final void mC_STYLE_SINGLE_LINE_COMMENT() throws RecognitionException {
         try {
             int _type = C_STYLE_SINGLE_LINE_COMMENT;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1897:2: ( '//' ( options {greedy=false; } : . )* EOL )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1897:4: '//' ( options {greedy=false; } : . )* EOL
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1916:2: ( '//' ( options {greedy=false; } : . )* EOL )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1916:4: '//' ( options {greedy=false; } : . )* EOL
             {
             match("//"); if (failed) return ;
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1897:9: ( options {greedy=false; } : . )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1916:9: ( options {greedy=false; } : . )*
             loop16:
             do {
                 int alt16=2;
@@ -2244,7 +2264,7 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1897:36: .
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1916:36: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -2274,12 +2294,12 @@
     public final void mMULTI_LINE_COMMENT() throws RecognitionException {
         try {
             int _type = MULTI_LINE_COMMENT;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1902:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1902:4: '/*' ( options {greedy=false; } : . )* '*/'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1921:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1921:4: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); if (failed) return ;
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1902:9: ( options {greedy=false; } : . )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1921:9: ( options {greedy=false; } : . )*
             loop17:
             do {
                 int alt17=2;
@@ -2304,7 +2324,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1902:35: .
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1921:35: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -2335,7 +2355,7 @@
     public final void mMISC() throws RecognitionException {
         try {
             int _type = MISC;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1906:7: ( '!' | '@' | '$' | '%' | '^' | '*' | '_' | '-' | '+' | '?' | '=' | '/' | '\\'' | '\\\\' | '|' | '&' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1925:7: ( '!' | '@' | '$' | '%' | '^' | '*' | '_' | '-' | '+' | '?' | '=' | '/' | '\\'' | '\\\\' | '|' | '&' )
             // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:
             {
             if ( input.LA(1)=='!'||(input.LA(1)>='$' && input.LA(1)<='\'')||(input.LA(1)>='*' && input.LA(1)<='+')||input.LA(1)=='-'||input.LA(1)=='/'||input.LA(1)=='='||(input.LA(1)>='?' && input.LA(1)<='@')||input.LA(1)=='\\'||(input.LA(1)>='^' && input.LA(1)<='_')||input.LA(1)=='|' ) {
@@ -2360,77 +2380,77 @@
     // $ANTLR end MISC
 
     public void mTokens() throws RecognitionException {
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:8: ( T72 | T73 | T74 | T75 | T76 | T77 | T78 | T79 | T80 | T81 | WS | INT | FLOAT | STRING | BOOL | PACKAGE | IMPORT | FUNCTION | GLOBAL | RULE | QUERY | TEMPLATE | ATTRIBUTES | DATE_EFFECTIVE | DATE_EXPIRES | ENABLED | SALIENCE | NO_LOOP | AUTO_FOCUS | ACTIVATION_GROUP | AGENDA_GROUP | DIALECT | RULEFLOW_GROUP | DURATION | LOCK_ON_ACTIVE | FROM | ACCUMULATE | INIT | ACTION | REVERSE | RESULT | COLLECT | OR | AND | CONTAINS | EXCLUDES | MEMBEROF | MATCHES | SOUNDSLIKE | IN | NULL | EXISTS | NOT | EVAL | FORALL | WHEN | THEN | END | ID | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | COMMA | DOT | DOUBLE_AMPER | DOUBLE_PIPE | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | MULTI_LINE_COMMENT | MISC )
-        int alt18=73;
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:8: ( T73 | T74 | T75 | T76 | T77 | T78 | T79 | T80 | T81 | T82 | WS | INT | FLOAT | STRING | BOOL | PACKAGE | IMPORT | FUNCTION | EVENT | GLOBAL | RULE | QUERY | TEMPLATE | ATTRIBUTES | DATE_EFFECTIVE | DATE_EXPIRES | ENABLED | SALIENCE | NO_LOOP | AUTO_FOCUS | ACTIVATION_GROUP | AGENDA_GROUP | DIALECT | RULEFLOW_GROUP | DURATION | LOCK_ON_ACTIVE | FROM | ACCUMULATE | INIT | ACTION | REVERSE | RESULT | COLLECT | OR | AND | CONTAINS | EXCLUDES | MEMBEROF | MATCHES | SOUNDSLIKE | IN | NULL | EXISTS | NOT | EVAL | FORALL | WHEN | THEN | END | ID | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | COMMA | DOT | DOUBLE_AMPER | DOUBLE_PIPE | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | MULTI_LINE_COMMENT | MISC )
+        int alt18=74;
         alt18 = dfa18.predict(input);
         switch (alt18) {
             case 1 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:10: T72
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:10: T73
                 {
-                mT72(); if (failed) return ;
+                mT73(); if (failed) return ;
 
                 }
                 break;
             case 2 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:14: T73
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:14: T74
                 {
-                mT73(); if (failed) return ;
+                mT74(); if (failed) return ;
 
                 }
                 break;
             case 3 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:18: T74
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:18: T75
                 {
-                mT74(); if (failed) return ;
+                mT75(); if (failed) return ;
 
                 }
                 break;
             case 4 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:22: T75
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:22: T76
                 {
-                mT75(); if (failed) return ;
+                mT76(); if (failed) return ;
 
                 }
                 break;
             case 5 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:26: T76
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:26: T77
                 {
-                mT76(); if (failed) return ;
+                mT77(); if (failed) return ;
 
                 }
                 break;
             case 6 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:30: T77
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:30: T78
                 {
-                mT77(); if (failed) return ;
+                mT78(); if (failed) return ;
 
                 }
                 break;
             case 7 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:34: T78
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:34: T79
                 {
-                mT78(); if (failed) return ;
+                mT79(); if (failed) return ;
 
                 }
                 break;
             case 8 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:38: T79
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:38: T80
                 {
-                mT79(); if (failed) return ;
+                mT80(); if (failed) return ;
 
                 }
                 break;
             case 9 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:42: T80
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:42: T81
                 {
-                mT80(); if (failed) return ;
+                mT81(); if (failed) return ;
 
                 }
                 break;
             case 10 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:46: T81
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:46: T82
                 {
-                mT81(); if (failed) return ;
+                mT82(); if (failed) return ;
 
                 }
                 break;
@@ -2491,386 +2511,393 @@
                 }
                 break;
             case 19 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:99: GLOBAL
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:99: EVENT
                 {
-                mGLOBAL(); if (failed) return ;
+                mEVENT(); if (failed) return ;
 
                 }
                 break;
             case 20 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:106: RULE
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:105: GLOBAL
                 {
-                mRULE(); if (failed) return ;
+                mGLOBAL(); if (failed) return ;
 
                 }
                 break;
             case 21 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:111: QUERY
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:112: RULE
                 {
-                mQUERY(); if (failed) return ;
+                mRULE(); if (failed) return ;
 
                 }
                 break;
             case 22 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:117: TEMPLATE
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:117: QUERY
                 {
-                mTEMPLATE(); if (failed) return ;
+                mQUERY(); if (failed) return ;
 
                 }
                 break;
             case 23 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:126: ATTRIBUTES
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:123: TEMPLATE
                 {
-                mATTRIBUTES(); if (failed) return ;
+                mTEMPLATE(); if (failed) return ;
 
                 }
                 break;
             case 24 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:137: DATE_EFFECTIVE
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:132: ATTRIBUTES
                 {
-                mDATE_EFFECTIVE(); if (failed) return ;
+                mATTRIBUTES(); if (failed) return ;
 
                 }
                 break;
             case 25 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:152: DATE_EXPIRES
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:143: DATE_EFFECTIVE
                 {
-                mDATE_EXPIRES(); if (failed) return ;
+                mDATE_EFFECTIVE(); if (failed) return ;
 
                 }
                 break;
             case 26 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:165: ENABLED
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:158: DATE_EXPIRES
                 {
-                mENABLED(); if (failed) return ;
+                mDATE_EXPIRES(); if (failed) return ;
 
                 }
                 break;
             case 27 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:173: SALIENCE
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:171: ENABLED
                 {
-                mSALIENCE(); if (failed) return ;
+                mENABLED(); if (failed) return ;
 
                 }
                 break;
             case 28 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:182: NO_LOOP
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:179: SALIENCE
                 {
-                mNO_LOOP(); if (failed) return ;
+                mSALIENCE(); if (failed) return ;
 
                 }
                 break;
             case 29 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:190: AUTO_FOCUS
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:188: NO_LOOP
                 {
-                mAUTO_FOCUS(); if (failed) return ;
+                mNO_LOOP(); if (failed) return ;
 
                 }
                 break;
             case 30 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:201: ACTIVATION_GROUP
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:196: AUTO_FOCUS
                 {
-                mACTIVATION_GROUP(); if (failed) return ;
+                mAUTO_FOCUS(); if (failed) return ;
 
                 }
                 break;
             case 31 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:218: AGENDA_GROUP
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:207: ACTIVATION_GROUP
                 {
-                mAGENDA_GROUP(); if (failed) return ;
+                mACTIVATION_GROUP(); if (failed) return ;
 
                 }
                 break;
             case 32 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:231: DIALECT
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:224: AGENDA_GROUP
                 {
-                mDIALECT(); if (failed) return ;
+                mAGENDA_GROUP(); if (failed) return ;
 
                 }
                 break;
             case 33 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:239: RULEFLOW_GROUP
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:237: DIALECT
                 {
-                mRULEFLOW_GROUP(); if (failed) return ;
+                mDIALECT(); if (failed) return ;
 
                 }
                 break;
             case 34 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:254: DURATION
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:245: RULEFLOW_GROUP
                 {
-                mDURATION(); if (failed) return ;
+                mRULEFLOW_GROUP(); if (failed) return ;
 
                 }
                 break;
             case 35 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:263: LOCK_ON_ACTIVE
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:260: DURATION
                 {
-                mLOCK_ON_ACTIVE(); if (failed) return ;
+                mDURATION(); if (failed) return ;
 
                 }
                 break;
             case 36 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:278: FROM
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:269: LOCK_ON_ACTIVE
                 {
-                mFROM(); if (failed) return ;
+                mLOCK_ON_ACTIVE(); if (failed) return ;
 
                 }
                 break;
             case 37 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:283: ACCUMULATE
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:284: FROM
                 {
-                mACCUMULATE(); if (failed) return ;
+                mFROM(); if (failed) return ;
 
                 }
                 break;
             case 38 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:294: INIT
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:289: ACCUMULATE
                 {
-                mINIT(); if (failed) return ;
+                mACCUMULATE(); if (failed) return ;
 
                 }
                 break;
             case 39 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:299: ACTION
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:300: INIT
                 {
-                mACTION(); if (failed) return ;
+                mINIT(); if (failed) return ;
 
                 }
                 break;
             case 40 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:306: REVERSE
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:305: ACTION
                 {
-                mREVERSE(); if (failed) return ;
+                mACTION(); if (failed) return ;
 
                 }
                 break;
             case 41 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:314: RESULT
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:312: REVERSE
                 {
-                mRESULT(); if (failed) return ;
+                mREVERSE(); if (failed) return ;
 
                 }
                 break;
             case 42 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:321: COLLECT
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:320: RESULT
                 {
-                mCOLLECT(); if (failed) return ;
+                mRESULT(); if (failed) return ;
 
                 }
                 break;
             case 43 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:329: OR
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:327: COLLECT
                 {
-                mOR(); if (failed) return ;
+                mCOLLECT(); if (failed) return ;
 
                 }
                 break;
             case 44 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:332: AND
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:335: OR
                 {
-                mAND(); if (failed) return ;
+                mOR(); if (failed) return ;
 
                 }
                 break;
             case 45 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:336: CONTAINS
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:338: AND
                 {
-                mCONTAINS(); if (failed) return ;
+                mAND(); if (failed) return ;
 
                 }
                 break;
             case 46 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:345: EXCLUDES
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:342: CONTAINS
                 {
-                mEXCLUDES(); if (failed) return ;
+                mCONTAINS(); if (failed) return ;
 
                 }
                 break;
             case 47 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:354: MEMBEROF
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:351: EXCLUDES
                 {
-                mMEMBEROF(); if (failed) return ;
+                mEXCLUDES(); if (failed) return ;
 
                 }
                 break;
             case 48 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:363: MATCHES
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:360: MEMBEROF
                 {
-                mMATCHES(); if (failed) return ;
+                mMEMBEROF(); if (failed) return ;
 
                 }
                 break;
             case 49 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:371: SOUNDSLIKE
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:369: MATCHES
                 {
-                mSOUNDSLIKE(); if (failed) return ;
+                mMATCHES(); if (failed) return ;
 
                 }
                 break;
             case 50 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:382: IN
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:377: SOUNDSLIKE
                 {
-                mIN(); if (failed) return ;
+                mSOUNDSLIKE(); if (failed) return ;
 
                 }
                 break;
             case 51 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:385: NULL
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:388: IN
                 {
-                mNULL(); if (failed) return ;
+                mIN(); if (failed) return ;
 
                 }
                 break;
             case 52 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:390: EXISTS
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:391: NULL
                 {
-                mEXISTS(); if (failed) return ;
+                mNULL(); if (failed) return ;
 
                 }
                 break;
             case 53 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:397: NOT
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:396: EXISTS
                 {
-                mNOT(); if (failed) return ;
+                mEXISTS(); if (failed) return ;
 
                 }
                 break;
             case 54 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:401: EVAL
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:403: NOT
                 {
-                mEVAL(); if (failed) return ;
+                mNOT(); if (failed) return ;
 
                 }
                 break;
             case 55 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:406: FORALL
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:407: EVAL
                 {
-                mFORALL(); if (failed) return ;
+                mEVAL(); if (failed) return ;
 
                 }
                 break;
             case 56 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:413: WHEN
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:412: FORALL
                 {
-                mWHEN(); if (failed) return ;
+                mFORALL(); if (failed) return ;
 
                 }
                 break;
             case 57 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:418: THEN
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:419: WHEN
                 {
-                mTHEN(); if (failed) return ;
+                mWHEN(); if (failed) return ;
 
                 }
                 break;
             case 58 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:423: END
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:424: THEN
                 {
-                mEND(); if (failed) return ;
+                mTHEN(); if (failed) return ;
 
                 }
                 break;
             case 59 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:427: ID
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:429: END
                 {
-                mID(); if (failed) return ;
+                mEND(); if (failed) return ;
 
                 }
                 break;
             case 60 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:430: LEFT_PAREN
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:433: ID
                 {
-                mLEFT_PAREN(); if (failed) return ;
+                mID(); if (failed) return ;
 
                 }
                 break;
             case 61 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:441: RIGHT_PAREN
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:436: LEFT_PAREN
                 {
-                mRIGHT_PAREN(); if (failed) return ;
+                mLEFT_PAREN(); if (failed) return ;
 
                 }
                 break;
             case 62 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:453: LEFT_SQUARE
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:447: RIGHT_PAREN
                 {
-                mLEFT_SQUARE(); if (failed) return ;
+                mRIGHT_PAREN(); if (failed) return ;
 
                 }
                 break;
             case 63 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:465: RIGHT_SQUARE
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:459: LEFT_SQUARE
                 {
-                mRIGHT_SQUARE(); if (failed) return ;
+                mLEFT_SQUARE(); if (failed) return ;
 
                 }
                 break;
             case 64 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:478: LEFT_CURLY
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:471: RIGHT_SQUARE
                 {
-                mLEFT_CURLY(); if (failed) return ;
+                mRIGHT_SQUARE(); if (failed) return ;
 
                 }
                 break;
             case 65 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:489: RIGHT_CURLY
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:484: LEFT_CURLY
                 {
-                mRIGHT_CURLY(); if (failed) return ;
+                mLEFT_CURLY(); if (failed) return ;
 
                 }
                 break;
             case 66 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:501: COMMA
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:495: RIGHT_CURLY
                 {
-                mCOMMA(); if (failed) return ;
+                mRIGHT_CURLY(); if (failed) return ;
 
                 }
                 break;
             case 67 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:507: DOT
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:507: COMMA
                 {
-                mDOT(); if (failed) return ;
+                mCOMMA(); if (failed) return ;
 
                 }
                 break;
             case 68 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:511: DOUBLE_AMPER
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:513: DOT
                 {
-                mDOUBLE_AMPER(); if (failed) return ;
+                mDOT(); if (failed) return ;
 
                 }
                 break;
             case 69 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:524: DOUBLE_PIPE
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:517: DOUBLE_AMPER
                 {
-                mDOUBLE_PIPE(); if (failed) return ;
+                mDOUBLE_AMPER(); if (failed) return ;
 
                 }
                 break;
             case 70 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:536: SH_STYLE_SINGLE_LINE_COMMENT
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:530: DOUBLE_PIPE
                 {
-                mSH_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
+                mDOUBLE_PIPE(); if (failed) return ;
 
                 }
                 break;
             case 71 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:565: C_STYLE_SINGLE_LINE_COMMENT
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:542: SH_STYLE_SINGLE_LINE_COMMENT
                 {
-                mC_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
+                mSH_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
 
                 }
                 break;
             case 72 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:593: MULTI_LINE_COMMENT
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:571: C_STYLE_SINGLE_LINE_COMMENT
                 {
-                mMULTI_LINE_COMMENT(); if (failed) return ;
+                mC_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
 
                 }
                 break;
             case 73 :
-                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:612: MISC
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:599: MULTI_LINE_COMMENT
                 {
+                mMULTI_LINE_COMMENT(); if (failed) return ;
+
+                }
+                break;
+            case 74 :
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:618: MISC
+                {
                 mMISC(); if (failed) return ;
 
                 }
@@ -2882,8 +2909,8 @@
 
     // $ANTLR start synpred1
     public final void synpred1_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1700:14: ( '\\r\\n' )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1700:16: '\\r\\n'
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1717:14: ( '\\r\\n' )
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1717:16: '\\r\\n'
         {
         match("\r\n"); if (failed) return ;
 
@@ -2912,92 +2939,93 @@
     static final String DFA18_eotS =
         "\2\uffff\1\55\1\uffff\2\53\1\61\1\63\1\53\1\uffff\1\66\1\uffff\1"+
         "\53\21\52\10\uffff\2\53\1\uffff\1\53\15\uffff\10\52\1\147\26\52"+
-        "\1\u0084\3\52\4\uffff\11\52\1\uffff\10\52\1\u0099\12\52\1\u00a4"+
-        "\3\52\1\uffff\1\u00a8\3\52\1\uffff\3\52\1\u00af\1\u00b0\2\52\1\u00b3"+
-        "\3\52\1\u00b7\4\52\1\u00bd\3\52\1\uffff\10\52\1\u00ca\1\52\1\uffff"+
-        "\2\52\1\u00ce\1\uffff\5\52\1\u00d4\2\uffff\2\52\1\uffff\1\52\1\u00af"+
-        "\1\52\1\uffff\5\52\1\uffff\1\u00de\4\52\1\uffff\2\52\1\uffff\3\52"+
-        "\1\uffff\3\52\2\uffff\4\52\1\uffff\1\52\1\u00f1\2\52\1\u00f4\1\u00f5"+
-        "\1\52\1\u00f7\1\52\1\uffff\2\52\1\u00fb\3\52\1\uffff\2\52\1\u0103"+
-        "\10\52\1\uffff\1\52\1\u010d\2\uffff\1\u010e\1\uffff\3\52\2\uffff"+
-        "\1\52\1\u0113\2\uffff\2\52\1\uffff\1\u0116\3\52\1\u011a\1\u011b"+
-        "\1\52\1\u011d\1\u011e\2\uffff\4\52\1\uffff\1\u0123\1\u0124\1\uffff"+
-        "\1\52\1\u0126\1\u0127\2\uffff\1\u0128\3\uffff\3\52\2\uffff\1\52"+
-        "\3\uffff\1\u012d\1\52\1\u012f\1\u0130\4\uffff";
+        "\1\u0085\3\52\4\uffff\11\52\1\uffff\2\52\1\u0094\14\52\1\u00a1\7"+
+        "\52\1\u00a9\1\uffff\4\52\1\uffff\3\52\1\u00b1\1\u00b2\1\52\1\u00b4"+
+        "\4\52\1\u00b9\2\52\1\uffff\1\u00bc\6\52\1\u00c4\4\52\1\uffff\7\52"+
+        "\1\uffff\1\u00d1\5\52\1\u00d7\2\uffff\1\52\1\uffff\2\52\1\u00b1"+
+        "\1\52\1\uffff\2\52\1\uffff\1\u00de\6\52\1\uffff\1\u00e5\5\52\1\uffff"+
+        "\1\52\1\uffff\3\52\2\uffff\4\52\1\uffff\1\52\1\u00f5\2\52\1\u00f8"+
+        "\1\52\1\uffff\1\52\1\u00fb\1\u00fc\1\u00fd\2\52\1\uffff\1\52\1\u0101"+
+        "\4\52\1\uffff\10\52\1\uffff\1\52\1\u0111\1\uffff\1\u0112\1\52\3"+
+        "\uffff\1\u0114\2\52\1\uffff\2\52\1\uffff\1\u0119\2\uffff\4\52\1"+
+        "\u011e\1\52\1\u0120\1\u0121\1\u0122\2\uffff\1\u0123\1\uffff\4\52"+
+        "\1\uffff\1\u0128\1\52\1\u012a\1\u012b\1\uffff\1\u012c\5\uffff\3"+
+        "\52\1\uffff\1\52\3\uffff\1\u0131\1\52\1\u0133\1\u0134\4\uffff";
     static final String DFA18_eofS =
-        "\u0131\uffff";
+        "\u0135\uffff";
     static final String DFA18_minS =
         "\1\11\1\uffff\1\52\1\uffff\1\60\4\75\1\uffff\1\56\1\uffff\1\0\1"+
-        "\145\2\141\1\155\1\154\1\145\1\165\1\143\1\141\1\156\1\141\3\157"+
-        "\1\162\1\141\1\150\10\uffff\1\46\1\174\1\uffff\1\52\15\uffff\1\165"+
-        "\1\145\1\155\1\162\1\157\1\156\1\154\1\143\1\60\1\160\1\157\1\163"+
-        "\1\154\1\145\1\143\1\144\1\145\2\164\1\141\1\164\1\162\1\143\2\141"+
-        "\1\165\2\154\1\55\1\143\1\154\1\60\1\164\1\155\1\145\4\uffff\1\145"+
-        "\1\156\1\160\1\141\1\155\1\143\1\163\1\153\1\164\1\uffff\1\157\1"+
-        "\142\1\145\1\165\1\145\1\162\1\165\1\151\1\60\1\156\1\157\1\162"+
-        "\1\154\1\145\1\141\1\154\1\163\1\154\1\142\1\60\1\156\1\151\1\154"+
-        "\1\uffff\1\60\1\153\1\164\1\154\1\uffff\1\143\1\142\1\156\2\60\2"+
-        "\154\1\60\1\164\1\145\1\141\1\60\1\162\1\141\1\162\1\154\1\60\1"+
-        "\171\1\155\1\157\1\uffff\1\144\1\55\1\151\1\145\1\55\1\164\1\165"+
-        "\1\164\1\60\1\154\1\uffff\1\144\1\145\1\60\1\uffff\1\55\1\141\1"+
-        "\145\1\150\1\145\1\60\2\uffff\1\141\1\154\1\uffff\1\151\1\60\1\147"+
-        "\1\uffff\1\164\1\154\1\163\1\164\1\154\1\uffff\1\60\1\165\1\141"+
-        "\1\156\1\141\1\uffff\1\142\1\143\1\145\1\151\1\144\1\163\1\uffff"+
-        "\1\145\1\163\1\156\2\uffff\1\151\1\143\1\145\1\162\1\uffff\1\164"+
-        "\1\60\1\157\1\145\2\60\1\145\1\60\1\157\1\uffff\1\154\1\164\1\60"+
-        "\1\55\1\165\1\164\1\146\1\157\1\145\1\60\1\144\1\154\1\143\1\156"+
-        "\1\164\1\163\1\117\1\145\1\uffff\1\156\1\60\2\uffff\1\60\1\uffff"+
-        "\1\167\1\141\1\151\2\uffff\1\164\1\60\2\uffff\1\156\1\163\1\uffff"+
-        "\1\60\1\151\1\145\1\163\2\60\1\146\2\60\2\uffff\1\55\1\164\1\157"+
-        "\1\145\1\uffff\2\60\1\uffff\1\153\2\60\2\uffff\1\60\3\uffff\1\145"+
-        "\1\156\1\163\2\uffff\1\145\3\uffff\1\60\1\55\2\60\4\uffff";
+        "\145\2\141\1\155\1\156\1\154\1\145\1\165\1\143\2\141\3\157\1\162"+
+        "\1\141\1\150\10\uffff\1\46\1\174\1\uffff\1\52\15\uffff\1\165\1\145"+
+        "\1\155\1\157\1\162\1\156\1\154\1\143\1\60\1\160\2\141\1\143\1\157"+
+        "\1\163\1\154\1\145\1\143\1\164\1\144\1\145\1\164\1\141\1\164\1\162"+
+        "\1\165\1\154\1\55\1\154\1\143\1\154\1\60\1\155\1\164\1\145\4\uffff"+
+        "\1\145\1\156\1\160\1\155\1\141\1\143\1\163\1\153\1\164\1\uffff\1"+
+        "\157\1\142\1\60\1\154\1\156\1\154\1\163\1\142\1\165\2\145\1\162"+
+        "\1\165\1\151\1\162\1\60\1\156\1\157\1\154\1\145\1\141\1\156\1\151"+
+        "\1\60\1\uffff\1\154\1\153\1\164\1\154\1\uffff\1\142\1\143\1\156"+
+        "\2\60\1\154\1\60\1\154\1\164\1\145\1\141\1\60\1\162\1\154\1\uffff"+
+        "\1\60\1\164\1\165\1\164\1\141\1\154\1\162\1\60\1\171\1\155\1\157"+
+        "\1\151\1\uffff\1\144\1\55\1\145\1\55\1\164\1\144\1\145\1\uffff\1"+
+        "\60\1\55\1\141\2\145\1\150\1\60\2\uffff\1\141\1\uffff\1\154\1\151"+
+        "\1\60\1\147\1\uffff\1\164\1\145\1\uffff\1\60\1\144\1\163\1\154\1"+
+        "\164\1\163\1\154\1\uffff\1\60\1\165\1\156\1\141\1\142\1\141\1\uffff"+
+        "\1\143\1\145\1\151\1\163\1\156\2\uffff\1\151\1\143\1\162\1\145\1"+
+        "\uffff\1\164\1\60\1\157\1\145\1\60\1\144\1\uffff\1\145\3\60\1\145"+
+        "\1\157\1\uffff\1\154\1\60\1\164\1\165\1\55\1\164\1\146\1\157\1\154"+
+        "\1\143\1\156\1\164\1\117\1\163\1\145\1\uffff\1\156\1\60\1\uffff"+
+        "\1\60\1\163\3\uffff\1\60\1\167\1\141\1\uffff\1\151\1\164\1\uffff"+
+        "\1\60\2\uffff\1\156\1\151\1\145\1\163\1\60\1\146\3\60\2\uffff\1"+
+        "\60\1\uffff\1\55\1\164\1\157\1\145\1\uffff\1\60\1\153\2\60\1\uffff"+
+        "\1\60\5\uffff\1\145\1\156\1\163\1\uffff\1\145\3\uffff\1\60\1\55"+
+        "\2\60\4\uffff";
     static final String DFA18_maxS =
         "\1\u00ff\1\uffff\1\52\1\uffff\1\76\4\75\1\uffff\1\71\1\uffff\1\ufffe"+
-        "\1\162\1\165\1\141\1\156\1\154\4\165\1\170\1\157\1\165\2\157\1\162"+
+        "\1\162\1\165\1\141\1\156\1\170\1\154\4\165\1\157\1\165\2\157\1\162"+
         "\1\145\1\150\10\uffff\1\46\1\174\1\uffff\1\57\15\uffff\1\165\1\145"+
-        "\1\155\1\162\1\157\1\156\1\154\1\143\1\u00ff\1\160\1\157\1\166\1"+
-        "\154\1\145\1\164\1\144\1\145\2\164\1\141\1\164\1\162\1\151\1\141"+
-        "\1\144\1\165\2\154\1\164\1\143\1\156\1\u00ff\1\164\1\155\1\145\4"+
-        "\uffff\1\145\1\156\1\160\1\141\1\155\1\143\1\163\1\153\1\164\1\uffff"+
-        "\1\157\1\142\1\145\1\165\1\145\1\162\1\165\1\151\1\u00ff\1\156\1"+
-        "\157\1\162\1\154\1\145\1\141\1\154\1\163\1\154\1\142\1\u00ff\1\156"+
-        "\1\151\1\154\1\uffff\1\u00ff\1\153\1\164\1\154\1\uffff\1\143\1\142"+
-        "\1\156\2\u00ff\2\154\1\u00ff\1\164\1\145\1\141\1\u00ff\1\162\1\141"+
-        "\1\162\1\154\1\u00ff\1\171\1\155\1\166\1\uffff\1\144\1\55\1\151"+
-        "\1\145\1\55\1\164\1\165\1\164\1\u00ff\1\154\1\uffff\1\144\1\145"+
-        "\1\u00ff\1\uffff\1\55\1\141\1\145\1\150\1\145\1\u00ff\2\uffff\1"+
-        "\141\1\154\1\uffff\1\151\1\u00ff\1\147\1\uffff\1\164\1\154\1\163"+
-        "\1\164\1\154\1\uffff\1\u00ff\1\165\1\141\1\156\1\141\1\uffff\1\142"+
-        "\1\143\1\145\1\151\1\144\1\163\1\uffff\1\145\1\163\1\156\2\uffff"+
-        "\1\151\1\143\1\145\1\162\1\uffff\1\164\1\u00ff\1\157\1\145\2\u00ff"+
-        "\1\145\1\u00ff\1\157\1\uffff\1\154\1\164\1\u00ff\1\55\1\165\1\164"+
-        "\1\170\1\157\1\145\1\u00ff\1\144\1\154\1\143\1\156\1\164\1\163\1"+
-        "\117\1\145\1\uffff\1\156\1\u00ff\2\uffff\1\u00ff\1\uffff\1\167\1"+
-        "\141\1\151\2\uffff\1\164\1\u00ff\2\uffff\1\156\1\163\1\uffff\1\u00ff"+
-        "\1\151\1\145\1\163\2\u00ff\1\146\2\u00ff\2\uffff\1\55\1\164\1\157"+
-        "\1\145\1\uffff\2\u00ff\1\uffff\1\153\2\u00ff\2\uffff\1\u00ff\3\uffff"+
-        "\1\145\1\156\1\163\2\uffff\1\145\3\uffff\1\u00ff\1\55\2\u00ff\4"+
-        "\uffff";
+        "\1\155\1\157\1\162\1\156\1\154\1\143\1\u00ff\1\160\1\144\1\145\1"+
+        "\151\1\157\1\166\1\154\1\145\2\164\1\144\1\145\1\164\1\141\1\164"+
+        "\1\162\1\165\1\154\1\164\1\154\1\143\1\156\1\u00ff\1\155\1\164\1"+
+        "\145\4\uffff\1\145\1\156\1\160\1\155\1\141\1\143\1\163\1\153\1\164"+
+        "\1\uffff\1\157\1\142\1\u00ff\1\154\1\156\1\154\1\163\1\142\1\165"+
+        "\2\145\1\162\1\165\1\151\1\162\1\u00ff\1\156\1\157\1\154\1\145\1"+
+        "\141\1\156\1\151\1\u00ff\1\uffff\1\154\1\153\1\164\1\154\1\uffff"+
+        "\1\142\1\143\1\156\2\u00ff\1\154\1\u00ff\1\154\1\164\1\145\1\141"+
+        "\1\u00ff\1\162\1\154\1\uffff\1\u00ff\1\164\1\165\1\164\1\141\1\154"+
+        "\1\162\1\u00ff\1\171\1\155\1\166\1\151\1\uffff\1\144\1\55\1\145"+
+        "\1\55\1\164\1\144\1\145\1\uffff\1\u00ff\1\55\1\141\2\145\1\150\1"+
+        "\u00ff\2\uffff\1\141\1\uffff\1\154\1\151\1\u00ff\1\147\1\uffff\1"+
+        "\164\1\145\1\uffff\1\u00ff\1\144\1\163\1\154\1\164\1\163\1\154\1"+
+        "\uffff\1\u00ff\1\165\1\156\1\141\1\142\1\141\1\uffff\1\143\1\145"+
+        "\1\151\1\163\1\156\2\uffff\1\151\1\143\1\162\1\145\1\uffff\1\164"+
+        "\1\u00ff\1\157\1\145\1\u00ff\1\144\1\uffff\1\145\3\u00ff\1\145\1"+
+        "\157\1\uffff\1\154\1\u00ff\1\164\1\165\1\55\1\164\1\170\1\157\1"+
+        "\154\1\143\1\156\1\164\1\117\1\163\1\145\1\uffff\1\156\1\u00ff\1"+
+        "\uffff\1\u00ff\1\163\3\uffff\1\u00ff\1\167\1\141\1\uffff\1\151\1"+
+        "\164\1\uffff\1\u00ff\2\uffff\1\156\1\151\1\145\1\163\1\u00ff\1\146"+
+        "\3\u00ff\2\uffff\1\u00ff\1\uffff\1\55\1\164\1\157\1\145\1\uffff"+
+        "\1\u00ff\1\153\2\u00ff\1\uffff\1\u00ff\5\uffff\1\145\1\156\1\163"+
+        "\1\uffff\1\145\3\uffff\1\u00ff\1\55\2\u00ff\4\uffff";
     static final String DFA18_acceptS =
-        "\1\uffff\1\1\1\uffff\1\3\5\uffff\1\13\1\uffff\1\16\22\uffff\1\73"+
-        "\1\74\1\75\1\76\1\77\1\100\1\101\1\102\2\uffff\1\106\1\uffff\1\73"+
-        "\1\111\1\2\1\103\1\4\1\5\1\7\1\6\1\11\1\10\1\12\1\15\1\14\43\uffff"+
-        "\1\104\1\105\1\110\1\107\11\uffff\1\62\27\uffff\1\34\4\uffff\1\53"+
-        "\24\uffff\1\54\12\uffff\1\72\3\uffff\1\65\6\uffff\1\17\1\71\2\uffff"+
-        "\1\44\3\uffff\1\46\5\uffff\1\24\5\uffff\1\35\6\uffff\1\66\3\uffff"+
-        "\1\63\1\43\4\uffff\1\70\11\uffff\1\25\22\uffff\1\67\2\uffff\1\21"+
-        "\1\23\1\uffff\1\51\3\uffff\1\47\1\37\2\uffff\1\30\1\31\2\uffff\1"+
-        "\64\11\uffff\1\20\1\50\4\uffff\1\40\2\uffff\1\32\3\uffff\1\52\1"+
-        "\60\1\uffff\1\26\1\22\1\41\3\uffff\1\42\1\56\1\uffff\1\33\1\55\1"+
-        "\57\4\uffff\1\45\1\36\1\27\1\61";
+        "\1\uffff\1\1\1\uffff\1\3\5\uffff\1\13\1\uffff\1\16\22\uffff\1\74"+
+        "\1\75\1\76\1\77\1\100\1\101\1\102\1\103\2\uffff\1\107\1\uffff\1"+
+        "\74\1\112\1\2\1\104\1\4\1\5\1\7\1\6\1\11\1\10\1\12\1\15\1\14\43"+
+        "\uffff\1\105\1\106\1\111\1\110\11\uffff\1\63\30\uffff\1\35\4\uffff"+
+        "\1\54\16\uffff\1\73\14\uffff\1\55\7\uffff\1\66\7\uffff\1\17\1\72"+
+        "\1\uffff\1\45\4\uffff\1\47\2\uffff\1\67\7\uffff\1\25\6\uffff\1\36"+
+        "\5\uffff\1\64\1\44\4\uffff\1\71\6\uffff\1\23\6\uffff\1\26\17\uffff"+
+        "\1\70\2\uffff\1\21\2\uffff\1\65\1\24\1\52\3\uffff\1\50\2\uffff\1"+
+        "\40\1\uffff\1\31\1\32\11\uffff\1\20\1\33\1\uffff\1\51\4\uffff\1"+
+        "\41\4\uffff\1\53\1\uffff\1\61\1\27\1\22\1\57\1\42\3\uffff\1\43\1"+
+        "\uffff\1\34\1\56\1\60\4\uffff\1\46\1\37\1\30\1\62";
     static final String DFA18_specialS =
-        "\u0131\uffff}>";
+        "\u0135\uffff}>";
     static final String[] DFA18_transitionS = {
             "\2\11\1\uffff\2\11\22\uffff\1\11\1\10\1\13\1\50\1\36\1\53\1"+
             "\46\1\14\1\37\1\40\2\53\1\45\1\4\1\2\1\51\12\12\1\3\1\1\1\7"+
-            "\1\5\1\6\2\53\32\52\1\41\1\53\1\42\1\53\1\36\1\uffff\1\24\1"+
-            "\52\1\32\1\25\1\26\1\16\1\21\1\52\1\20\2\52\1\31\1\34\1\30\1"+
-            "\33\1\17\1\23\1\22\1\27\1\15\2\52\1\35\3\52\1\43\1\47\1\44\102"+
+            "\1\5\1\6\2\53\32\52\1\41\1\53\1\42\1\53\1\36\1\uffff\1\25\1"+
+            "\52\1\32\1\26\1\21\1\16\1\22\1\52\1\20\2\52\1\31\1\34\1\30\1"+
+            "\33\1\17\1\24\1\23\1\27\1\15\2\52\1\35\3\52\1\43\1\47\1\44\102"+
             "\uffff\100\52",
             "",
             "\1\54",
@@ -3012,21 +3040,21 @@
             "",
             "\uffff\13",
             "\1\71\2\uffff\1\70\11\uffff\1\67",
-            "\1\75\15\uffff\1\72\2\uffff\1\73\2\uffff\1\74",
+            "\1\75\15\uffff\1\73\2\uffff\1\72\2\uffff\1\74",
             "\1\76",
             "\1\100\1\77",
-            "\1\101",
-            "\1\102\17\uffff\1\103",
+            "\1\101\7\uffff\1\102\1\uffff\1\103",
             "\1\104",
-            "\1\105\3\uffff\1\107\6\uffff\1\106\5\uffff\1\111\1\110",
-            "\1\113\7\uffff\1\112\13\uffff\1\114",
-            "\1\117\7\uffff\1\116\1\uffff\1\115",
+            "\1\105\17\uffff\1\106",
+            "\1\107",
+            "\1\110\3\uffff\1\113\6\uffff\1\112\5\uffff\1\111\1\114",
+            "\1\116\7\uffff\1\115\13\uffff\1\117",
             "\1\121\15\uffff\1\120",
-            "\1\123\5\uffff\1\122",
+            "\1\122\5\uffff\1\123",
             "\1\124",
             "\1\125",
             "\1\126",
-            "\1\127\3\uffff\1\130",
+            "\1\130\3\uffff\1\127",
             "\1\131",
             "",
             "",
@@ -3064,37 +3092,36 @@
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\10\52\1\146\21\52"+
             "\105\uffff\100\52",
             "\1\150",
-            "\1\151",
-            "\1\153\2\uffff\1\152",
-            "\1\154",
-            "\1\155",
-            "\1\156\20\uffff\1\157",
-            "\1\160",
-            "\1\161",
+            "\1\151\2\uffff\1\152",
+            "\1\153\3\uffff\1\154",
+            "\1\155\5\uffff\1\156",
+            "\1\157",
+            "\1\160\2\uffff\1\161",
             "\1\162",
             "\1\163",
-            "\1\164",
-            "\1\165",
+            "\1\164\20\uffff\1\165",
             "\1\166",
-            "\1\167\5\uffff\1\170",
+            "\1\167",
+            "\1\170",
             "\1\171",
-            "\1\172\2\uffff\1\173",
+            "\1\172",
+            "\1\173",
             "\1\174",
             "\1\175",
             "\1\176",
-            "\1\177\106\uffff\1\u0080",
+            "\1\u0080\106\uffff\1\177",
             "\1\u0081",
-            "\1\u0083\1\uffff\1\u0082",
+            "\1\u0082",
+            "\1\u0084\1\uffff\1\u0083",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u0085",
             "\1\u0086",
             "\1\u0087",
+            "\1\u0088",
             "",
             "",
             "",
             "",
-            "\1\u0088",
             "\1\u0089",
             "\1\u008a",
             "\1\u008b",
@@ -3103,17 +3130,17 @@
             "\1\u008e",
             "\1\u008f",
             "\1\u0090",
+            "\1\u0091",
             "",
-            "\1\u0091",
             "\1\u0092",
             "\1\u0093",
-            "\1\u0094",
+            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
+            "\52",
             "\1\u0095",
             "\1\u0096",
             "\1\u0097",
             "\1\u0098",
-            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
-            "\52",
+            "\1\u0099",
             "\1\u009a",
             "\1\u009b",
             "\1\u009c",
@@ -3121,84 +3148,84 @@
             "\1\u009e",
             "\1\u009f",
             "\1\u00a0",
-            "\1\u00a1",
+            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
+            "\52",
             "\1\u00a2",
             "\1\u00a3",
-            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
-            "\52",
+            "\1\u00a4",
             "\1\u00a5",
             "\1\u00a6",
             "\1\u00a7",
-            "",
+            "\1\u00a8",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u00a9",
+            "",
             "\1\u00aa",
             "\1\u00ab",
-            "",
             "\1\u00ac",
             "\1\u00ad",
+            "",
             "\1\u00ae",
+            "\1\u00af",
+            "\1\u00b0",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u00b1",
-            "\1\u00b2",
+            "\1\u00b3",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u00b4",
             "\1\u00b5",
             "\1\u00b6",
+            "\1\u00b7",
+            "\1\u00b8",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u00b8",
-            "\1\u00b9",
             "\1\u00ba",
             "\1\u00bb",
-            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\5\52\1\u00bc\24\52"+
-            "\105\uffff\100\52",
+            "",
+            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
+            "\52",
+            "\1\u00bd",
             "\1\u00be",
             "\1\u00bf",
-            "\1\u00c1\6\uffff\1\u00c0",
-            "",
+            "\1\u00c0",
+            "\1\u00c1",
             "\1\u00c2",
-            "\1\u00c3",
-            "\1\u00c4",
+            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\5\52\1\u00c3\24\52"+
+            "\105\uffff\100\52",
             "\1\u00c5",
             "\1\u00c6",
-            "\1\u00c7",
-            "\1\u00c8",
+            "\1\u00c7\6\uffff\1\u00c8",
             "\1\u00c9",
-            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
-            "\52",
+            "",
+            "\1\u00ca",
             "\1\u00cb",
-            "",
             "\1\u00cc",
             "\1\u00cd",
+            "\1\u00ce",
+            "\1\u00cf",
+            "\1\u00d0",
+            "",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "",
-            "\1\u00cf",
-            "\1\u00d0",
-            "\1\u00d1",
             "\1\u00d2",
             "\1\u00d3",
+            "\1\u00d4",
+            "\1\u00d5",
+            "\1\u00d6",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
             "",
             "",
-            "\1\u00d5",
-            "\1\u00d6",
-            "",
-            "\1\u00d7",
-            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
-            "\52",
             "\1\u00d8",
             "",
             "\1\u00d9",
             "\1\u00da",
+            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
+            "\52",
             "\1\u00db",
+            "",
             "\1\u00dc",
             "\1\u00dd",
             "",
@@ -3208,130 +3235,136 @@
             "\1\u00e0",
             "\1\u00e1",
             "\1\u00e2",
-            "",
             "\1\u00e3",
             "\1\u00e4",
-            "\1\u00e5",
+            "",
+            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
+            "\52",
             "\1\u00e6",
             "\1\u00e7",
             "\1\u00e8",
-            "",
             "\1\u00e9",
             "\1\u00ea",
+            "",
             "\1\u00eb",
-            "",
-            "",
             "\1\u00ec",
             "\1\u00ed",
             "\1\u00ee",
             "\1\u00ef",
             "",
+            "",
             "\1\u00f0",
-            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
-            "\52",
+            "\1\u00f1",
             "\1\u00f2",
             "\1\u00f3",
+            "",
+            "\1\u00f4",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
-            "\52",
             "\1\u00f6",
+            "\1\u00f7",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u00f8",
+            "\1\u00f9",
             "",
-            "\1\u00f9",
             "\1\u00fa",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u00fc",
-            "\1\u00fd",
+            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
+            "\52",
+            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
+            "\52",
             "\1\u00fe",
-            "\1\u00ff\21\uffff\1\u0100",
-            "\1\u0101",
-            "\1\u0102",
+            "\1\u00ff",
+            "",
+            "\1\u0100",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
+            "\1\u0102",
+            "\1\u0103",
             "\1\u0104",
             "\1\u0105",
-            "\1\u0106",
-            "\1\u0107",
+            "\1\u0106\21\uffff\1\u0107",
             "\1\u0108",
             "\1\u0109",
             "\1\u010a",
             "\1\u010b",
+            "\1\u010c",
+            "\1\u010d",
+            "\1\u010e",
+            "\1\u010f",
             "",
-            "\1\u010c",
+            "\1\u0110",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
             "",
-            "",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
+            "\1\u0113",
             "",
-            "\1\u010f",
-            "\1\u0110",
-            "\1\u0111",
             "",
             "",
-            "\1\u0112",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "",
-            "",
-            "\1\u0114",
             "\1\u0115",
+            "\1\u0116",
             "",
-            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
-            "\52",
             "\1\u0117",
             "\1\u0118",
-            "\1\u0119",
+            "",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
+            "",
+            "",
+            "\1\u011a",
+            "\1\u011b",
+            "\1\u011c",
+            "\1\u011d",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u011c",
+            "\1\u011f",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
+            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
+            "\52",
             "",
             "",
-            "\1\u011f",
-            "\1\u0120",
-            "\1\u0121",
-            "\1\u0122",
-            "",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
-            "\52",
             "",
+            "\1\u0124",
             "\1\u0125",
+            "\1\u0126",
+            "\1\u0127",
+            "",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
+            "\1\u0129",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
+            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
+            "\52",
             "",
-            "",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
             "",
             "",
             "",
-            "\1\u0129",
-            "\1\u012a",
-            "\1\u012b",
             "",
             "",
-            "\1\u012c",
+            "\1\u012d",
+            "\1\u012e",
+            "\1\u012f",
             "",
+            "\1\u0130",
             "",
             "",
+            "",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u012e",
+            "\1\u0132",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
@@ -3372,7 +3405,7 @@
             this.transition = DFA18_transition;
         }
         public String getDescription() {
-            return "1:1: Tokens : ( T72 | T73 | T74 | T75 | T76 | T77 | T78 | T79 | T80 | T81 | WS | INT | FLOAT | STRING | BOOL | PACKAGE | IMPORT | FUNCTION | GLOBAL | RULE | QUERY | TEMPLATE | ATTRIBUTES | DATE_EFFECTIVE | DATE_EXPIRES | ENABLED | SALIENCE | NO_LOOP | AUTO_FOCUS | ACTIVATION_GROUP | AGENDA_GROUP | DIALECT | RULEFLOW_GROUP | DURATION | LOCK_ON_ACTIVE | FROM | ACCUMULATE | INIT | ACTION | REVERSE | RESULT | COLLECT | OR | AND | CONTAINS | EXCLUDES | MEMBEROF | MATCHES | SOUNDSLIKE | IN | NULL | EXISTS | NOT | EVAL | FORALL | WHEN | THEN | END | ID | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | COMMA | DOT | DOUBLE_AMPER | DOUBLE_PIPE | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | MULTI_LINE_COMMENT | MISC );";
+            return "1:1: Tokens : ( T73 | T74 | T75 | T76 | T77 | T78 | T79 | T80 | T81 | T82 | WS | INT | FLOAT | STRING | BOOL | PACKAGE | IMPORT | FUNCTION | EVENT | GLOBAL | RULE | QUERY | TEMPLATE | ATTRIBUTES | DATE_EFFECTIVE | DATE_EXPIRES | ENABLED | SALIENCE | NO_LOOP | AUTO_FOCUS | ACTIVATION_GROUP | AGENDA_GROUP | DIALECT | RULEFLOW_GROUP | DURATION | LOCK_ON_ACTIVE | FROM | ACCUMULATE | INIT | ACTION | REVERSE | RESULT | COLLECT | OR | AND | CONTAINS | EXCLUDES | MEMBEROF | MATCHES | SOUNDSLIKE | IN | NULL | EXISTS | NOT | EVAL | FORALL | WHEN | THEN | END | ID | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | COMMA | DOT | DOUBLE_AMPER | DOUBLE_PIPE | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | MULTI_LINE_COMMENT | MISC );";
         }
     }
  

Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2007-10-02 19:31:56
+// $ANTLR 3.0.1 /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2007-10-29 17:23:33
 
 	package org.drools.lang;
 	import java.util.List;
@@ -17,81 +17,82 @@
 import java.util.HashMap;
 public class DRLParser extends Parser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "PACKAGE", "IMPORT", "FUNCTION", "ID", "DOT", "GLOBAL", "LEFT_PAREN", "COMMA", "RIGHT_PAREN", "QUERY", "END", "TEMPLATE", "RULE", "WHEN", "ATTRIBUTES", "DATE_EFFECTIVE", "STRING", "DATE_EXPIRES", "ENABLED", "BOOL", "SALIENCE", "INT", "NO_LOOP", "AUTO_FOCUS", "ACTIVATION_GROUP", "RULEFLOW_GROUP", "AGENDA_GROUP", "DURATION", "DIALECT", "LOCK_ON_ACTIVE", "OR", "DOUBLE_PIPE", "AND", "DOUBLE_AMPER", "FROM", "EXISTS", "NOT", "EVAL", "FORALL", "ACCUMULATE", "INIT", "ACTION", "REVERSE", "RESULT", "COLLECT", "CONTAINS", "EXCLUDES", "MATCHES", "SOUNDSLIKE", "MEMBEROF", "IN", "FLOAT", "NULL", "LEFT_CURLY", "RIGHT_CURLY", "LEFT_SQUARE", "RIGHT_SQUARE", "THEN", "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT", "MISC", "';'", "'.*'", "':'", "'->'", "'=='", "'>'", "'>='", "'<'", "'<='", "'!='"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "PACKAGE", "IMPORT", "FUNCTION", "EVENT", "ID", "DOT", "GLOBAL", "LEFT_PAREN", "COMMA", "RIGHT_PAREN", "QUERY", "END", "TEMPLATE", "RULE", "WHEN", "ATTRIBUTES", "DATE_EFFECTIVE", "STRING", "DATE_EXPIRES", "ENABLED", "BOOL", "SALIENCE", "INT", "NO_LOOP", "AUTO_FOCUS", "ACTIVATION_GROUP", "RULEFLOW_GROUP", "AGENDA_GROUP", "DURATION", "DIALECT", "LOCK_ON_ACTIVE", "OR", "DOUBLE_PIPE", "AND", "DOUBLE_AMPER", "FROM", "EXISTS", "NOT", "EVAL", "FORALL", "ACCUMULATE", "INIT", "ACTION", "REVERSE", "RESULT", "COLLECT", "CONTAINS", "EXCLUDES", "MATCHES", "SOUNDSLIKE", "MEMBEROF", "IN", "FLOAT", "NULL", "LEFT_CURLY", "RIGHT_CURLY", "LEFT_SQUARE", "RIGHT_SQUARE", "THEN", "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT", "MISC", "';'", "'.*'", "':'", "'->'", "'=='", "'>'", "'>='", "'<'", "'<='", "'!='"
     };
-    public static final int COMMA=11;
-    public static final int EXISTS=39;
-    public static final int AUTO_FOCUS=27;
-    public static final int END=14;
-    public static final int HexDigit=65;
-    public static final int FORALL=42;
-    public static final int TEMPLATE=15;
-    public static final int MISC=71;
-    public static final int FLOAT=55;
-    public static final int QUERY=13;
-    public static final int THEN=61;
-    public static final int RULE=16;
-    public static final int INIT=44;
+    public static final int COMMA=12;
+    public static final int EXISTS=40;
+    public static final int AUTO_FOCUS=28;
+    public static final int END=15;
+    public static final int HexDigit=66;
+    public static final int FORALL=43;
+    public static final int TEMPLATE=16;
+    public static final int MISC=72;
+    public static final int FLOAT=56;
+    public static final int QUERY=14;
+    public static final int THEN=62;
+    public static final int RULE=17;
+    public static final int INIT=45;
     public static final int IMPORT=5;
-    public static final int DATE_EFFECTIVE=19;
     public static final int PACKAGE=4;
-    public static final int OR=34;
-    public static final int DOT=8;
-    public static final int DOUBLE_PIPE=35;
-    public static final int AND=36;
+    public static final int DATE_EFFECTIVE=20;
+    public static final int OR=35;
+    public static final int DOT=9;
+    public static final int DOUBLE_PIPE=36;
+    public static final int AND=37;
     public static final int FUNCTION=6;
-    public static final int GLOBAL=9;
-    public static final int EscapeSequence=64;
-    public static final int DIALECT=32;
-    public static final int INT=25;
-    public static final int LOCK_ON_ACTIVE=33;
-    public static final int DATE_EXPIRES=21;
-    public static final int LEFT_SQUARE=59;
-    public static final int CONTAINS=49;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=68;
-    public static final int ATTRIBUTES=18;
-    public static final int LEFT_CURLY=57;
-    public static final int RESULT=47;
-    public static final int ID=7;
-    public static final int FROM=38;
-    public static final int LEFT_PAREN=10;
-    public static final int ACTIVATION_GROUP=28;
-    public static final int DOUBLE_AMPER=37;
-    public static final int RIGHT_CURLY=58;
-    public static final int SOUNDSLIKE=52;
-    public static final int EXCLUDES=50;
-    public static final int BOOL=23;
-    public static final int MEMBEROF=53;
-    public static final int WHEN=17;
-    public static final int RULEFLOW_GROUP=29;
-    public static final int WS=63;
-    public static final int STRING=20;
-    public static final int ACTION=45;
-    public static final int COLLECT=48;
-    public static final int IN=54;
-    public static final int REVERSE=46;
-    public static final int NO_LOOP=26;
-    public static final int ACCUMULATE=43;
-    public static final int UnicodeEscape=66;
-    public static final int DURATION=31;
-    public static final int EVAL=41;
-    public static final int MATCHES=51;
+    public static final int GLOBAL=10;
+    public static final int EscapeSequence=65;
+    public static final int DIALECT=33;
+    public static final int INT=26;
+    public static final int LOCK_ON_ACTIVE=34;
+    public static final int DATE_EXPIRES=22;
+    public static final int LEFT_SQUARE=60;
+    public static final int CONTAINS=50;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=69;
+    public static final int ATTRIBUTES=19;
+    public static final int EVENT=7;
+    public static final int LEFT_CURLY=58;
+    public static final int RESULT=48;
+    public static final int ID=8;
+    public static final int FROM=39;
+    public static final int LEFT_PAREN=11;
+    public static final int ACTIVATION_GROUP=29;
+    public static final int DOUBLE_AMPER=38;
+    public static final int RIGHT_CURLY=59;
+    public static final int SOUNDSLIKE=53;
+    public static final int EXCLUDES=51;
+    public static final int BOOL=24;
+    public static final int MEMBEROF=54;
+    public static final int WHEN=18;
+    public static final int RULEFLOW_GROUP=30;
+    public static final int WS=64;
+    public static final int STRING=21;
+    public static final int ACTION=46;
+    public static final int COLLECT=49;
+    public static final int IN=55;
+    public static final int REVERSE=47;
+    public static final int ACCUMULATE=44;
+    public static final int NO_LOOP=27;
+    public static final int UnicodeEscape=67;
+    public static final int DURATION=32;
+    public static final int EVAL=42;
+    public static final int MATCHES=52;
     public static final int EOF=-1;
-    public static final int EOL=62;
-    public static final int NULL=56;
-    public static final int AGENDA_GROUP=30;
-    public static final int OctalEscape=67;
-    public static final int SALIENCE=24;
-    public static final int MULTI_LINE_COMMENT=70;
-    public static final int RIGHT_PAREN=12;
-    public static final int NOT=40;
-    public static final int ENABLED=22;
-    public static final int RIGHT_SQUARE=60;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=69;
+    public static final int EOL=63;
+    public static final int NULL=57;
+    public static final int AGENDA_GROUP=31;
+    public static final int OctalEscape=68;
+    public static final int SALIENCE=25;
+    public static final int MULTI_LINE_COMMENT=71;
+    public static final int RIGHT_PAREN=13;
+    public static final int NOT=41;
+    public static final int ENABLED=23;
+    public static final int RIGHT_SQUARE=61;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=70;
 
         public DRLParser(TokenStream input) {
             super(input);
-            ruleMemo = new HashMap[80+1];
+            ruleMemo = new HashMap[81+1];
          }
         
 
@@ -288,14 +289,14 @@
             int alt1=2;
             int LA1_0 = input.LA(1);
 
-            if ( (LA1_0==72) ) {
+            if ( (LA1_0==73) ) {
                 alt1=1;
             }
             switch (alt1) {
                 case 1 :
                     // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:196:4: ';'
                     {
-                    match(input,72,FOLLOW_72_in_opt_semicolon39); if (failed) return ;
+                    match(input,73,FOLLOW_73_in_opt_semicolon39); if (failed) return ;
 
                     }
                     break;
@@ -435,7 +436,7 @@
 
 
     // $ANTLR start statement
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:223:1: statement : (a= rule_attribute | function_import_statement | import_statement | global | function | t= template | r= rule | q= query );
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:223:1: statement : (a= rule_attribute | function_import_statement | event_import_statement | import_statement | global | function | t= template | r= rule | q= query );
     public final void statement() throws RecognitionException {
         AttributeDescr a = null;
 
@@ -447,8 +448,8 @@
 
 
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:224:2: (a= rule_attribute | function_import_statement | import_statement | global | function | t= template | r= rule | q= query )
-            int alt4=8;
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:224:2: (a= rule_attribute | function_import_statement | event_import_statement | import_statement | global | function | t= template | r= rule | q= query )
+            int alt4=9;
             switch ( input.LA(1) ) {
             case DATE_EFFECTIVE:
             case DATE_EXPIRES:
@@ -468,52 +469,61 @@
                 break;
             case IMPORT:
                 {
-                int LA4_2 = input.LA(2);
-
-                if ( (LA4_2==FUNCTION) ) {
+                switch ( input.LA(2) ) {
+                case EVENT:
+                    {
+                    alt4=3;
+                    }
+                    break;
+                case FUNCTION:
+                    {
                     alt4=2;
-                }
-                else if ( (LA4_2==ID) ) {
-                    alt4=3;
-                }
-                else {
+                    }
+                    break;
+                case ID:
+                    {
+                    alt4=4;
+                    }
+                    break;
+                default:
                     if (backtracking>0) {failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("223:1: statement : (a= rule_attribute | function_import_statement | import_statement | global | function | t= template | r= rule | q= query );", 4, 2, input);
+                        new NoViableAltException("223:1: statement : (a= rule_attribute | function_import_statement | event_import_statement | import_statement | global | function | t= template | r= rule | q= query );", 4, 2, input);
 
                     throw nvae;
                 }
+
                 }
                 break;
             case GLOBAL:
                 {
-                alt4=4;
+                alt4=5;
                 }
                 break;
             case FUNCTION:
                 {
-                alt4=5;
+                alt4=6;
                 }
                 break;
             case TEMPLATE:
                 {
-                alt4=6;
+                alt4=7;
                 }
                 break;
             case RULE:
                 {
-                alt4=7;
+                alt4=8;
                 }
                 break;
             case QUERY:
                 {
-                alt4=8;
+                alt4=9;
                 }
                 break;
             default:
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("223:1: statement : (a= rule_attribute | function_import_statement | import_statement | global | function | t= template | r= rule | q= query );", 4, 0, input);
+                    new NoViableAltException("223:1: statement : (a= rule_attribute | function_import_statement | event_import_statement | import_statement | global | function | t= template | r= rule | q= query );", 4, 0, input);
 
                 throw nvae;
             }
@@ -543,39 +553,49 @@
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:226:4: import_statement
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:226:4: event_import_statement
                     {
-                    pushFollow(FOLLOW_import_statement_in_statement134);
-                    import_statement();
+                    pushFollow(FOLLOW_event_import_statement_in_statement134);
+                    event_import_statement();
                     _fsp--;
                     if (failed) return ;
 
                     }
                     break;
                 case 4 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:227:4: global
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:227:4: import_statement
                     {
-                    pushFollow(FOLLOW_global_in_statement140);
-                    global();
+                    pushFollow(FOLLOW_import_statement_in_statement139);
+                    import_statement();
                     _fsp--;
                     if (failed) return ;
 
                     }
                     break;
                 case 5 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:228:4: function
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:228:4: global
                     {
-                    pushFollow(FOLLOW_function_in_statement146);
-                    function();
+                    pushFollow(FOLLOW_global_in_statement145);
+                    global();
                     _fsp--;
                     if (failed) return ;
 
                     }
                     break;
                 case 6 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:229:10: t= template
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:229:4: function
                     {
-                    pushFollow(FOLLOW_template_in_statement160);
+                    pushFollow(FOLLOW_function_in_statement151);
+                    function();
+                    _fsp--;
+                    if (failed) return ;
+
+                    }
+                    break;
+                case 7 :
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:230:10: t= template
+                    {
+                    pushFollow(FOLLOW_template_in_statement165);
                     t=template();
                     _fsp--;
                     if (failed) return ;
@@ -585,10 +605,10 @@
 
                     }
                     break;
-                case 7 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:230:4: r= rule
+                case 8 :
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:231:4: r= rule
                     {
-                    pushFollow(FOLLOW_rule_in_statement169);
+                    pushFollow(FOLLOW_rule_in_statement174);
                     r=rule();
                     _fsp--;
                     if (failed) return ;
@@ -598,10 +618,10 @@
 
                     }
                     break;
-                case 8 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:231:4: q= query
+                case 9 :
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:232:4: q= query
                     {
-                    pushFollow(FOLLOW_query_in_statement181);
+                    pushFollow(FOLLOW_query_in_statement186);
                     q=query();
                     _fsp--;
                     if (failed) return ;
@@ -626,7 +646,7 @@
 
 
     // $ANTLR start package_statement
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:233:1: package_statement returns [String packageName] : PACKAGE n= dotted_name opt_semicolon ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:234:1: package_statement returns [String packageName] : PACKAGE n= dotted_name opt_semicolon ;
     public final String package_statement() throws RecognitionException {
         String packageName = null;
 
@@ -637,15 +657,15 @@
         		packageName = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:237:2: ( PACKAGE n= dotted_name opt_semicolon )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:238:3: PACKAGE n= dotted_name opt_semicolon
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:238:2: ( PACKAGE n= dotted_name opt_semicolon )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:239:3: PACKAGE n= dotted_name opt_semicolon
             {
-            match(input,PACKAGE,FOLLOW_PACKAGE_in_package_statement205); if (failed) return packageName;
-            pushFollow(FOLLOW_dotted_name_in_package_statement209);
+            match(input,PACKAGE,FOLLOW_PACKAGE_in_package_statement210); if (failed) return packageName;
+            pushFollow(FOLLOW_dotted_name_in_package_statement214);
             n=dotted_name();
             _fsp--;
             if (failed) return packageName;
-            pushFollow(FOLLOW_opt_semicolon_in_package_statement211);
+            pushFollow(FOLLOW_opt_semicolon_in_package_statement216);
             opt_semicolon();
             _fsp--;
             if (failed) return packageName;
@@ -670,7 +690,7 @@
 
 
     // $ANTLR start import_statement
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:246:1: import_statement : IMPORT import_name[importDecl] opt_semicolon ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:247:1: import_statement : IMPORT import_name[importDecl] opt_semicolon ;
     public final void import_statement() throws RecognitionException {
         Token IMPORT1=null;
 
@@ -678,11 +698,11 @@
                 	ImportDescr importDecl = null;
                 
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:250:2: ( IMPORT import_name[importDecl] opt_semicolon )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:250:4: IMPORT import_name[importDecl] opt_semicolon
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:251:2: ( IMPORT import_name[importDecl] opt_semicolon )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:251:4: IMPORT import_name[importDecl] opt_semicolon
             {
             IMPORT1=(Token)input.LT(1);
-            match(input,IMPORT,FOLLOW_IMPORT_in_import_statement242); if (failed) return ;
+            match(input,IMPORT,FOLLOW_IMPORT_in_import_statement247); if (failed) return ;
             if ( backtracking==0 ) {
 
               	            importDecl = factory.createImport( );
@@ -692,11 +712,11 @@
               		    }
               	        
             }
-            pushFollow(FOLLOW_import_name_in_import_statement265);
+            pushFollow(FOLLOW_import_name_in_import_statement270);
             import_name(importDecl);
             _fsp--;
             if (failed) return ;
-            pushFollow(FOLLOW_opt_semicolon_in_import_statement268);
+            pushFollow(FOLLOW_opt_semicolon_in_import_statement273);
             opt_semicolon();
             _fsp--;
             if (failed) return ;
@@ -716,7 +736,7 @@
 
 
     // $ANTLR start function_import_statement
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:261:1: function_import_statement : IMPORT FUNCTION import_name[importDecl] opt_semicolon ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:262:1: function_import_statement : IMPORT FUNCTION import_name[importDecl] opt_semicolon ;
     public final void function_import_statement() throws RecognitionException {
         Token IMPORT2=null;
 
@@ -724,12 +744,12 @@
                 	FunctionImportDescr importDecl = null;
                 
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:265:2: ( IMPORT FUNCTION import_name[importDecl] opt_semicolon )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:265:4: IMPORT FUNCTION import_name[importDecl] opt_semicolon
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:266:2: ( IMPORT FUNCTION import_name[importDecl] opt_semicolon )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:266:4: IMPORT FUNCTION import_name[importDecl] opt_semicolon
             {
             IMPORT2=(Token)input.LT(1);
-            match(input,IMPORT,FOLLOW_IMPORT_in_function_import_statement292); if (failed) return ;
-            match(input,FUNCTION,FOLLOW_FUNCTION_in_function_import_statement294); if (failed) return ;
+            match(input,IMPORT,FOLLOW_IMPORT_in_function_import_statement297); if (failed) return ;
+            match(input,FUNCTION,FOLLOW_FUNCTION_in_function_import_statement299); if (failed) return ;
             if ( backtracking==0 ) {
 
               	            importDecl = factory.createFunctionImport();
@@ -739,11 +759,11 @@
               		    }
               	        
             }
-            pushFollow(FOLLOW_import_name_in_function_import_statement317);
+            pushFollow(FOLLOW_import_name_in_function_import_statement322);
             import_name(importDecl);
             _fsp--;
             if (failed) return ;
-            pushFollow(FOLLOW_opt_semicolon_in_function_import_statement320);
+            pushFollow(FOLLOW_opt_semicolon_in_function_import_statement325);
             opt_semicolon();
             _fsp--;
             if (failed) return ;
@@ -762,14 +782,61 @@
     // $ANTLR end function_import_statement
 
 
+    // $ANTLR start event_import_statement
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:277:1: event_import_statement : IMPORT EVENT import_name[importDecl] opt_semicolon ;
+    public final void event_import_statement() throws RecognitionException {
+        Token IMPORT3=null;
+
+
+                	ImportDescr importDecl = null;
+                
+        try {
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:281:2: ( IMPORT EVENT import_name[importDecl] opt_semicolon )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:281:4: IMPORT EVENT import_name[importDecl] opt_semicolon
+            {
+            IMPORT3=(Token)input.LT(1);
+            match(input,IMPORT,FOLLOW_IMPORT_in_event_import_statement349); if (failed) return ;
+            match(input,EVENT,FOLLOW_EVENT_in_event_import_statement351); if (failed) return ;
+            if ( backtracking==0 ) {
+
+              	            importDecl = factory.createEventImport( );
+              	            importDecl.setStartCharacter( ((CommonToken)IMPORT3).getStartIndex() );
+              		    if (packageDescr != null) {
+              			packageDescr.addImport( importDecl );
+              		    }
+              	        
+            }
+            pushFollow(FOLLOW_import_name_in_event_import_statement374);
+            import_name(importDecl);
+            _fsp--;
+            if (failed) return ;
+            pushFollow(FOLLOW_opt_semicolon_in_event_import_statement377);
+            opt_semicolon();
+            _fsp--;
+            if (failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end event_import_statement
+
+
     // $ANTLR start import_name
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:277:1: import_name[ImportDescr importDecl] returns [String name] : ID ( DOT id= identifier )* (star= '.*' )? ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:293:1: import_name[ImportDescr importDecl] returns [String name] : ID ( DOT id= identifier )* (star= '.*' )? ;
     public final String import_name(ImportDescr importDecl) throws RecognitionException {
         String name = null;
 
         Token star=null;
-        Token ID3=null;
-        Token DOT4=null;
+        Token ID4=null;
+        Token DOT5=null;
         identifier_return id = null;
 
 
@@ -777,19 +844,19 @@
         		name = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:281:2: ( ID ( DOT id= identifier )* (star= '.*' )? )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:282:3: ID ( DOT id= identifier )* (star= '.*' )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:297:2: ( ID ( DOT id= identifier )* (star= '.*' )? )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:298:3: ID ( DOT id= identifier )* (star= '.*' )?
             {
-            ID3=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_import_name346); if (failed) return name;
+            ID4=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_import_name403); if (failed) return name;
             if ( backtracking==0 ) {
                
-              		    name =ID3.getText(); 
+              		    name =ID4.getText(); 
               		    importDecl.setTarget( name );
-              		    importDecl.setEndCharacter( ((CommonToken)ID3).getStopIndex() );
+              		    importDecl.setEndCharacter( ((CommonToken)ID4).getStopIndex() );
               		
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:288:3: ( DOT id= identifier )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:304:3: ( DOT id= identifier )*
             loop5:
             do {
                 int alt5=2;
@@ -802,17 +869,17 @@
 
                 switch (alt5) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:288:5: DOT id= identifier
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:304:5: DOT id= identifier
             	    {
-            	    DOT4=(Token)input.LT(1);
-            	    match(input,DOT,FOLLOW_DOT_in_import_name358); if (failed) return name;
-            	    pushFollow(FOLLOW_identifier_in_import_name362);
+            	    DOT5=(Token)input.LT(1);
+            	    match(input,DOT,FOLLOW_DOT_in_import_name415); if (failed) return name;
+            	    pushFollow(FOLLOW_identifier_in_import_name419);
             	    id=identifier();
             	    _fsp--;
             	    if (failed) return name;
             	    if ( backtracking==0 ) {
             	       
-            	      		        name = name + DOT4.getText() + input.toString(id.start,id.stop); 
+            	      		        name = name + DOT5.getText() + input.toString(id.start,id.stop); 
             	      			importDecl.setTarget( name );
             	      		        importDecl.setEndCharacter( ((CommonToken)((Token)id.start)).getStopIndex() );
             	      		    
@@ -826,19 +893,19 @@
                 }
             } while (true);
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:295:3: (star= '.*' )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:311:3: (star= '.*' )?
             int alt6=2;
             int LA6_0 = input.LA(1);
 
-            if ( (LA6_0==73) ) {
+            if ( (LA6_0==74) ) {
                 alt6=1;
             }
             switch (alt6) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:295:5: star= '.*'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:311:5: star= '.*'
                     {
                     star=(Token)input.LT(1);
-                    match(input,73,FOLLOW_73_in_import_name386); if (failed) return name;
+                    match(input,74,FOLLOW_74_in_import_name443); if (failed) return name;
                     if ( backtracking==0 ) {
                        
                       		        name = name + star.getText(); 
@@ -868,9 +935,9 @@
 
 
     // $ANTLR start global
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:305:1: global : GLOBAL type= dotted_name id= identifier opt_semicolon ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:321:1: global : GLOBAL type= dotted_name id= identifier opt_semicolon ;
     public final void global() throws RecognitionException {
-        Token GLOBAL5=null;
+        Token GLOBAL6=null;
         String type = null;
 
         identifier_return id = null;
@@ -880,19 +947,19 @@
         	    GlobalDescr global = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:309:2: ( GLOBAL type= dotted_name id= identifier opt_semicolon )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:310:3: GLOBAL type= dotted_name id= identifier opt_semicolon
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:325:2: ( GLOBAL type= dotted_name id= identifier opt_semicolon )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:326:3: GLOBAL type= dotted_name id= identifier opt_semicolon
             {
-            GLOBAL5=(Token)input.LT(1);
-            match(input,GLOBAL,FOLLOW_GLOBAL_in_global420); if (failed) return ;
+            GLOBAL6=(Token)input.LT(1);
+            match(input,GLOBAL,FOLLOW_GLOBAL_in_global477); if (failed) return ;
             if ( backtracking==0 ) {
 
               		    global = factory.createGlobal();
-              	            global.setStartCharacter( ((CommonToken)GLOBAL5).getStartIndex() );
+              	            global.setStartCharacter( ((CommonToken)GLOBAL6).getStartIndex() );
               		    packageDescr.addGlobal( global );
               		
             }
-            pushFollow(FOLLOW_dotted_name_in_global431);
+            pushFollow(FOLLOW_dotted_name_in_global488);
             type=dotted_name();
             _fsp--;
             if (failed) return ;
@@ -901,11 +968,11 @@
               		    global.setType( type );
               		
             }
-            pushFollow(FOLLOW_identifier_in_global442);
+            pushFollow(FOLLOW_identifier_in_global499);
             id=identifier();
             _fsp--;
             if (failed) return ;
-            pushFollow(FOLLOW_opt_semicolon_in_global444);
+            pushFollow(FOLLOW_opt_semicolon_in_global501);
             opt_semicolon();
             _fsp--;
             if (failed) return ;
@@ -931,9 +998,9 @@
 
 
     // $ANTLR start function
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:328:1: function : FUNCTION (retType= dotted_name )? id= identifier LEFT_PAREN ( (paramType= dotted_name )? paramName= argument ( COMMA (paramType= dotted_name )? paramName= argument )* )? RIGHT_PAREN body= curly_chunk ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:344:1: function : FUNCTION (retType= dotted_name )? id= identifier LEFT_PAREN ( (paramType= dotted_name )? paramName= argument ( COMMA (paramType= dotted_name )? paramName= argument )* )? RIGHT_PAREN body= curly_chunk ;
     public final void function() throws RecognitionException {
-        Token FUNCTION6=null;
+        Token FUNCTION7=null;
         String retType = null;
 
         identifier_return id = null;
@@ -950,12 +1017,12 @@
         		String type = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:333:2: ( FUNCTION (retType= dotted_name )? id= identifier LEFT_PAREN ( (paramType= dotted_name )? paramName= argument ( COMMA (paramType= dotted_name )? paramName= argument )* )? RIGHT_PAREN body= curly_chunk )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:334:3: FUNCTION (retType= dotted_name )? id= identifier LEFT_PAREN ( (paramType= dotted_name )? paramName= argument ( COMMA (paramType= dotted_name )? paramName= argument )* )? RIGHT_PAREN body= curly_chunk
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:349:2: ( FUNCTION (retType= dotted_name )? id= identifier LEFT_PAREN ( (paramType= dotted_name )? paramName= argument ( COMMA (paramType= dotted_name )? paramName= argument )* )? RIGHT_PAREN body= curly_chunk )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:350:3: FUNCTION (retType= dotted_name )? id= identifier LEFT_PAREN ( (paramType= dotted_name )? paramName= argument ( COMMA (paramType= dotted_name )? paramName= argument )* )? RIGHT_PAREN body= curly_chunk
             {
-            FUNCTION6=(Token)input.LT(1);
-            match(input,FUNCTION,FOLLOW_FUNCTION_in_function469); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:334:19: (retType= dotted_name )?
+            FUNCTION7=(Token)input.LT(1);
+            match(input,FUNCTION,FOLLOW_FUNCTION_in_function526); if (failed) return ;
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:350:19: (retType= dotted_name )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -968,9 +1035,9 @@
             }
             switch (alt7) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:334:19: retType= dotted_name
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:350:19: retType= dotted_name
                     {
-                    pushFollow(FOLLOW_dotted_name_in_function473);
+                    pushFollow(FOLLOW_dotted_name_in_function530);
                     retType=dotted_name();
                     _fsp--;
                     if (failed) return ;
@@ -980,7 +1047,7 @@
 
             }
 
-            pushFollow(FOLLOW_identifier_in_function478);
+            pushFollow(FOLLOW_identifier_in_function535);
             id=identifier();
             _fsp--;
             if (failed) return ;
@@ -989,13 +1056,13 @@
               			//System.err.println( "function :: " + n.getText() );
               			type = retType != null ? retType : null;
               			f = factory.createFunction( input.toString(id.start,id.stop), type );
-              			f.setLocation(offset(FUNCTION6.getLine()), FUNCTION6.getCharPositionInLine());
-              	        	f.setStartCharacter( ((CommonToken)FUNCTION6).getStartIndex() );
+              			f.setLocation(offset(FUNCTION7.getLine()), FUNCTION7.getCharPositionInLine());
+              	        	f.setStartCharacter( ((CommonToken)FUNCTION7).getStartIndex() );
               			packageDescr.addFunction( f );
               		
             }
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_function487); if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:344:4: ( (paramType= dotted_name )? paramName= argument ( COMMA (paramType= dotted_name )? paramName= argument )* )?
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_function544); if (failed) return ;
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:360:4: ( (paramType= dotted_name )? paramName= argument ( COMMA (paramType= dotted_name )? paramName= argument )* )?
             int alt11=2;
             int LA11_0 = input.LA(1);
 
@@ -1004,16 +1071,16 @@
             }
             switch (alt11) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:344:6: (paramType= dotted_name )? paramName= argument ( COMMA (paramType= dotted_name )? paramName= argument )*
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:360:6: (paramType= dotted_name )? paramName= argument ( COMMA (paramType= dotted_name )? paramName= argument )*
                     {
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:344:15: (paramType= dotted_name )?
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:360:15: (paramType= dotted_name )?
                     int alt8=2;
                     alt8 = dfa8.predict(input);
                     switch (alt8) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:344:15: paramType= dotted_name
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:360:15: paramType= dotted_name
                             {
-                            pushFollow(FOLLOW_dotted_name_in_function496);
+                            pushFollow(FOLLOW_dotted_name_in_function553);
                             paramType=dotted_name();
                             _fsp--;
                             if (failed) return ;
@@ -1023,7 +1090,7 @@
 
                     }
 
-                    pushFollow(FOLLOW_argument_in_function501);
+                    pushFollow(FOLLOW_argument_in_function558);
                     paramName=argument();
                     _fsp--;
                     if (failed) return ;
@@ -1033,7 +1100,7 @@
                       					f.addParameter( type, paramName );
                       				
                     }
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:349:5: ( COMMA (paramType= dotted_name )? paramName= argument )*
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:365:5: ( COMMA (paramType= dotted_name )? paramName= argument )*
                     loop10:
                     do {
                         int alt10=2;
@@ -1046,17 +1113,17 @@
 
                         switch (alt10) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:349:7: COMMA (paramType= dotted_name )? paramName= argument
+                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:365:7: COMMA (paramType= dotted_name )? paramName= argument
                     	    {
-                    	    match(input,COMMA,FOLLOW_COMMA_in_function515); if (failed) return ;
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:349:22: (paramType= dotted_name )?
+                    	    match(input,COMMA,FOLLOW_COMMA_in_function572); if (failed) return ;
+                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:365:22: (paramType= dotted_name )?
                     	    int alt9=2;
                     	    alt9 = dfa9.predict(input);
                     	    switch (alt9) {
                     	        case 1 :
-                    	            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:349:22: paramType= dotted_name
+                    	            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:365:22: paramType= dotted_name
                     	            {
-                    	            pushFollow(FOLLOW_dotted_name_in_function519);
+                    	            pushFollow(FOLLOW_dotted_name_in_function576);
                     	            paramType=dotted_name();
                     	            _fsp--;
                     	            if (failed) return ;
@@ -1066,7 +1133,7 @@
 
                     	    }
 
-                    	    pushFollow(FOLLOW_argument_in_function524);
+                    	    pushFollow(FOLLOW_argument_in_function581);
                     	    paramName=argument();
                     	    _fsp--;
                     	    if (failed) return ;
@@ -1091,8 +1158,8 @@
 
             }
 
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_function548); if (failed) return ;
-            pushFollow(FOLLOW_curly_chunk_in_function554);
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_function605); if (failed) return ;
+            pushFollow(FOLLOW_curly_chunk_in_function611);
             body=curly_chunk();
             _fsp--;
             if (failed) return ;
@@ -1120,7 +1187,7 @@
 
 
     // $ANTLR start argument
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:366:1: argument returns [String name] : id= identifier ( '[' ']' )* ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:382:1: argument returns [String name] : id= identifier ( '[' ']' )* ;
     public final String argument() throws RecognitionException {
         String name = null;
 
@@ -1131,17 +1198,17 @@
         		name = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:370:2: (id= identifier ( '[' ']' )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:370:4: id= identifier ( '[' ']' )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:386:2: (id= identifier ( '[' ']' )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:386:4: id= identifier ( '[' ']' )*
             {
-            pushFollow(FOLLOW_identifier_in_argument581);
+            pushFollow(FOLLOW_identifier_in_argument638);
             id=identifier();
             _fsp--;
             if (failed) return name;
             if ( backtracking==0 ) {
                name =input.toString(id.start,id.stop); 
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:370:38: ( '[' ']' )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:386:38: ( '[' ']' )*
             loop12:
             do {
                 int alt12=2;
@@ -1154,10 +1221,10 @@
 
                 switch (alt12) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:370:40: '[' ']'
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:386:40: '[' ']'
             	    {
-            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_argument587); if (failed) return name;
-            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_argument589); if (failed) return name;
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_argument644); if (failed) return name;
+            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_argument646); if (failed) return name;
             	    if ( backtracking==0 ) {
             	       name += "[]";
             	    }
@@ -1186,13 +1253,13 @@
 
 
     // $ANTLR start query
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:375:1: query returns [QueryDescr query] : QUERY queryName= name ( LEFT_PAREN ( ( (paramType= qualified_id )? paramName= ID ) ( COMMA (paramType= qualified_id )? paramName= ID )* )? RIGHT_PAREN )? normal_lhs_block[lhs] END opt_semicolon ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:391:1: query returns [QueryDescr query] : QUERY queryName= name ( LEFT_PAREN ( ( (paramType= qualified_id )? paramName= ID ) ( COMMA (paramType= qualified_id )? paramName= ID )* )? RIGHT_PAREN )? normal_lhs_block[lhs] END opt_semicolon ;
     public final QueryDescr query() throws RecognitionException {
         QueryDescr query = null;
 
         Token paramName=null;
-        Token QUERY7=null;
-        Token END8=null;
+        Token QUERY8=null;
+        Token END9=null;
         String queryName = null;
 
         qualified_id_return paramType = null;
@@ -1206,34 +1273,34 @@
          
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:383:2: ( QUERY queryName= name ( LEFT_PAREN ( ( (paramType= qualified_id )? paramName= ID ) ( COMMA (paramType= qualified_id )? paramName= ID )* )? RIGHT_PAREN )? normal_lhs_block[lhs] END opt_semicolon )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:384:3: QUERY queryName= name ( LEFT_PAREN ( ( (paramType= qualified_id )? paramName= ID ) ( COMMA (paramType= qualified_id )? paramName= ID )* )? RIGHT_PAREN )? normal_lhs_block[lhs] END opt_semicolon
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:399:2: ( QUERY queryName= name ( LEFT_PAREN ( ( (paramType= qualified_id )? paramName= ID ) ( COMMA (paramType= qualified_id )? paramName= ID )* )? RIGHT_PAREN )? normal_lhs_block[lhs] END opt_semicolon )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:400:3: QUERY queryName= name ( LEFT_PAREN ( ( (paramType= qualified_id )? paramName= ID ) ( COMMA (paramType= qualified_id )? paramName= ID )* )? RIGHT_PAREN )? normal_lhs_block[lhs] END opt_semicolon
             {
-            QUERY7=(Token)input.LT(1);
-            match(input,QUERY,FOLLOW_QUERY_in_query619); if (failed) return query;
-            pushFollow(FOLLOW_name_in_query623);
+            QUERY8=(Token)input.LT(1);
+            match(input,QUERY,FOLLOW_QUERY_in_query676); if (failed) return query;
+            pushFollow(FOLLOW_name_in_query680);
             queryName=name();
             _fsp--;
             if (failed) return query;
             if ( backtracking==0 ) {
                
               			query = factory.createQuery( queryName ); 
-              			query.setLocation( offset(QUERY7.getLine()), QUERY7.getCharPositionInLine() );
-              			query.setStartCharacter( ((CommonToken)QUERY7).getStartIndex() );
+              			query.setLocation( offset(QUERY8.getLine()), QUERY8.getCharPositionInLine() );
+              			query.setStartCharacter( ((CommonToken)QUERY8).getStartIndex() );
               			lhs = new AndDescr(); query.setLhs( lhs ); 
-              			lhs.setLocation( offset(QUERY7.getLine()), QUERY7.getCharPositionInLine() );
+              			lhs.setLocation( offset(QUERY8.getLine()), QUERY8.getCharPositionInLine() );
                                       location.setType( Location.LOCATION_RULE_HEADER );
               		
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:393:3: ( LEFT_PAREN ( ( (paramType= qualified_id )? paramName= ID ) ( COMMA (paramType= qualified_id )? paramName= ID )* )? RIGHT_PAREN )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:409:3: ( LEFT_PAREN ( ( (paramType= qualified_id )? paramName= ID ) ( COMMA (paramType= qualified_id )? paramName= ID )* )? RIGHT_PAREN )?
             int alt17=2;
             alt17 = dfa17.predict(input);
             switch (alt17) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:393:5: LEFT_PAREN ( ( (paramType= qualified_id )? paramName= ID ) ( COMMA (paramType= qualified_id )? paramName= ID )* )? RIGHT_PAREN
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:409:5: LEFT_PAREN ( ( (paramType= qualified_id )? paramName= ID ) ( COMMA (paramType= qualified_id )? paramName= ID )* )? RIGHT_PAREN
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_query633); if (failed) return query;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:394:11: ( ( (paramType= qualified_id )? paramName= ID ) ( COMMA (paramType= qualified_id )? paramName= ID )* )?
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_query690); if (failed) return query;
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:410:11: ( ( (paramType= qualified_id )? paramName= ID ) ( COMMA (paramType= qualified_id )? paramName= ID )* )?
                     int alt16=2;
                     int LA16_0 = input.LA(1);
 
@@ -1242,15 +1309,15 @@
                     }
                     switch (alt16) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:394:13: ( (paramType= qualified_id )? paramName= ID ) ( COMMA (paramType= qualified_id )? paramName= ID )*
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:410:13: ( (paramType= qualified_id )? paramName= ID ) ( COMMA (paramType= qualified_id )? paramName= ID )*
                             {
                             if ( backtracking==0 ) {
                                params = new ArrayList(); types = new ArrayList();
                             }
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:396:15: ( (paramType= qualified_id )? paramName= ID )
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:396:16: (paramType= qualified_id )? paramName= ID
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:412:15: ( (paramType= qualified_id )? paramName= ID )
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:412:16: (paramType= qualified_id )? paramName= ID
                             {
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:396:25: (paramType= qualified_id )?
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:412:25: (paramType= qualified_id )?
                             int alt13=2;
                             int LA13_0 = input.LA(1);
 
@@ -1263,9 +1330,9 @@
                             }
                             switch (alt13) {
                                 case 1 :
-                                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:396:25: paramType= qualified_id
+                                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:412:25: paramType= qualified_id
                                     {
-                                    pushFollow(FOLLOW_qualified_id_in_query668);
+                                    pushFollow(FOLLOW_qualified_id_in_query725);
                                     paramType=qualified_id();
                                     _fsp--;
                                     if (failed) return query;
@@ -1276,14 +1343,14 @@
                             }
 
                             paramName=(Token)input.LT(1);
-                            match(input,ID,FOLLOW_ID_in_query673); if (failed) return query;
+                            match(input,ID,FOLLOW_ID_in_query730); if (failed) return query;
                             if ( backtracking==0 ) {
                                params.add( paramName.getText() ); String type = (paramType != null) ? paramType.text : "Object"; types.add( type ); 
                             }
 
                             }
 
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:397:15: ( COMMA (paramType= qualified_id )? paramName= ID )*
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:413:15: ( COMMA (paramType= qualified_id )? paramName= ID )*
                             loop15:
                             do {
                                 int alt15=2;
@@ -1296,10 +1363,10 @@
 
                                 switch (alt15) {
                             	case 1 :
-                            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:397:16: COMMA (paramType= qualified_id )? paramName= ID
+                            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:413:16: COMMA (paramType= qualified_id )? paramName= ID
                             	    {
-                            	    match(input,COMMA,FOLLOW_COMMA_in_query694); if (failed) return query;
-                            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:397:31: (paramType= qualified_id )?
+                            	    match(input,COMMA,FOLLOW_COMMA_in_query751); if (failed) return query;
+                            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:413:31: (paramType= qualified_id )?
                             	    int alt14=2;
                             	    int LA14_0 = input.LA(1);
 
@@ -1312,9 +1379,9 @@
                             	    }
                             	    switch (alt14) {
                             	        case 1 :
-                            	            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:397:31: paramType= qualified_id
+                            	            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:413:31: paramType= qualified_id
                             	            {
-                            	            pushFollow(FOLLOW_qualified_id_in_query698);
+                            	            pushFollow(FOLLOW_qualified_id_in_query755);
                             	            paramType=qualified_id();
                             	            _fsp--;
                             	            if (failed) return query;
@@ -1325,7 +1392,7 @@
                             	    }
 
                             	    paramName=(Token)input.LT(1);
-                            	    match(input,ID,FOLLOW_ID_in_query703); if (failed) return query;
+                            	    match(input,ID,FOLLOW_ID_in_query760); if (failed) return query;
                             	    if ( backtracking==0 ) {
                             	       params.add( paramName.getText() );  String type = (paramType != null) ? paramType.text : "Object"; types.add( type );  
                             	    }
@@ -1349,7 +1416,7 @@
 
                     }
 
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_query753); if (failed) return query;
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_query810); if (failed) return query;
 
                     }
                     break;
@@ -1361,19 +1428,19 @@
                                       location.setType( Location.LOCATION_LHS_BEGIN_OF_CONDITION );
               	        
             }
-            pushFollow(FOLLOW_normal_lhs_block_in_query782);
+            pushFollow(FOLLOW_normal_lhs_block_in_query839);
             normal_lhs_block(lhs);
             _fsp--;
             if (failed) return query;
-            END8=(Token)input.LT(1);
-            match(input,END,FOLLOW_END_in_query787); if (failed) return query;
-            pushFollow(FOLLOW_opt_semicolon_in_query789);
+            END9=(Token)input.LT(1);
+            match(input,END,FOLLOW_END_in_query844); if (failed) return query;
+            pushFollow(FOLLOW_opt_semicolon_in_query846);
             opt_semicolon();
             _fsp--;
             if (failed) return query;
             if ( backtracking==0 ) {
 
-              			query.setEndCharacter( ((CommonToken)END8).getStopIndex() );
+              			query.setEndCharacter( ((CommonToken)END9).getStopIndex() );
               		
             }
 
@@ -1392,12 +1459,12 @@
 
 
     // $ANTLR start template
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:415:1: template returns [FactTemplateDescr template] : TEMPLATE templateName= name opt_semicolon (slot= template_slot )+ END opt_semicolon ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:431:1: template returns [FactTemplateDescr template] : TEMPLATE templateName= name opt_semicolon (slot= template_slot )+ END opt_semicolon ;
     public final FactTemplateDescr template() throws RecognitionException {
         FactTemplateDescr template = null;
 
-        Token TEMPLATE9=null;
-        Token END10=null;
+        Token TEMPLATE10=null;
+        Token END11=null;
         String templateName = null;
 
         FieldTemplateDescr slot = null;
@@ -1407,27 +1474,27 @@
         		template = null;		
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:419:2: ( TEMPLATE templateName= name opt_semicolon (slot= template_slot )+ END opt_semicolon )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:420:3: TEMPLATE templateName= name opt_semicolon (slot= template_slot )+ END opt_semicolon
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:435:2: ( TEMPLATE templateName= name opt_semicolon (slot= template_slot )+ END opt_semicolon )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:436:3: TEMPLATE templateName= name opt_semicolon (slot= template_slot )+ END opt_semicolon
             {
-            TEMPLATE9=(Token)input.LT(1);
-            match(input,TEMPLATE,FOLLOW_TEMPLATE_in_template817); if (failed) return template;
-            pushFollow(FOLLOW_name_in_template821);
+            TEMPLATE10=(Token)input.LT(1);
+            match(input,TEMPLATE,FOLLOW_TEMPLATE_in_template874); if (failed) return template;
+            pushFollow(FOLLOW_name_in_template878);
             templateName=name();
             _fsp--;
             if (failed) return template;
-            pushFollow(FOLLOW_opt_semicolon_in_template823);
+            pushFollow(FOLLOW_opt_semicolon_in_template880);
             opt_semicolon();
             _fsp--;
             if (failed) return template;
             if ( backtracking==0 ) {
 
               			template = new FactTemplateDescr(templateName);
-              			template.setLocation( offset(TEMPLATE9.getLine()), TEMPLATE9.getCharPositionInLine() );			
-              			template.setStartCharacter( ((CommonToken)TEMPLATE9).getStartIndex() );
+              			template.setLocation( offset(TEMPLATE10.getLine()), TEMPLATE10.getCharPositionInLine() );			
+              			template.setStartCharacter( ((CommonToken)TEMPLATE10).getStartIndex() );
               		
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:426:3: (slot= template_slot )+
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:442:3: (slot= template_slot )+
             int cnt18=0;
             loop18:
             do {
@@ -1441,9 +1508,9 @@
 
                 switch (alt18) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:427:4: slot= template_slot
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:443:4: slot= template_slot
             	    {
-            	    pushFollow(FOLLOW_template_slot_in_template838);
+            	    pushFollow(FOLLOW_template_slot_in_template895);
             	    slot=template_slot();
             	    _fsp--;
             	    if (failed) return template;
@@ -1466,15 +1533,15 @@
                 cnt18++;
             } while (true);
 
-            END10=(Token)input.LT(1);
-            match(input,END,FOLLOW_END_in_template853); if (failed) return template;
-            pushFollow(FOLLOW_opt_semicolon_in_template855);
+            END11=(Token)input.LT(1);
+            match(input,END,FOLLOW_END_in_template910); if (failed) return template;
+            pushFollow(FOLLOW_opt_semicolon_in_template912);
             opt_semicolon();
             _fsp--;
             if (failed) return template;
             if ( backtracking==0 ) {
 
-              			template.setEndCharacter( ((CommonToken)END10).getStopIndex() );
+              			template.setEndCharacter( ((CommonToken)END11).getStopIndex() );
               		
             }
 
@@ -1493,7 +1560,7 @@
 
 
     // $ANTLR start template_slot
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:438:1: template_slot returns [FieldTemplateDescr field] : fieldType= qualified_id id= identifier opt_semicolon ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:454:1: template_slot returns [FieldTemplateDescr field] : fieldType= qualified_id id= identifier opt_semicolon ;
     public final FieldTemplateDescr template_slot() throws RecognitionException {
         FieldTemplateDescr field = null;
 
@@ -1506,15 +1573,15 @@
         		field = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:442:2: (fieldType= qualified_id id= identifier opt_semicolon )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:443:11: fieldType= qualified_id id= identifier opt_semicolon
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:458:2: (fieldType= qualified_id id= identifier opt_semicolon )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:459:11: fieldType= qualified_id id= identifier opt_semicolon
             {
             if ( backtracking==0 ) {
 
               			field = factory.createFieldTemplate();
               	         
             }
-            pushFollow(FOLLOW_qualified_id_in_template_slot901);
+            pushFollow(FOLLOW_qualified_id_in_template_slot958);
             fieldType=qualified_id();
             _fsp--;
             if (failed) return field;
@@ -1525,11 +1592,11 @@
               			field.setEndCharacter( ((CommonToken)((Token)fieldType.stop)).getStopIndex() );
               		 
             }
-            pushFollow(FOLLOW_identifier_in_template_slot917);
+            pushFollow(FOLLOW_identifier_in_template_slot974);
             id=identifier();
             _fsp--;
             if (failed) return field;
-            pushFollow(FOLLOW_opt_semicolon_in_template_slot919);
+            pushFollow(FOLLOW_opt_semicolon_in_template_slot976);
             opt_semicolon();
             _fsp--;
             if (failed) return field;
@@ -1556,12 +1623,12 @@
 
 
     // $ANTLR start rule
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:461:1: rule returns [RuleDescr rule] : RULE ruleName= name ( rule_attributes[$rule] )? ( WHEN ( ':' )? normal_lhs_block[lhs] )? rhs_chunk[$rule] ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:477:1: rule returns [RuleDescr rule] : RULE ruleName= name ( rule_attributes[$rule] )? ( WHEN ( ':' )? normal_lhs_block[lhs] )? rhs_chunk[$rule] ;
     public final RuleDescr rule() throws RecognitionException {
         RuleDescr rule = null;
 
-        Token RULE11=null;
-        Token WHEN12=null;
+        Token RULE12=null;
+        Token WHEN13=null;
         String ruleName = null;
 
 
@@ -1570,12 +1637,12 @@
         		AndDescr lhs = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:466:2: ( RULE ruleName= name ( rule_attributes[$rule] )? ( WHEN ( ':' )? normal_lhs_block[lhs] )? rhs_chunk[$rule] )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:467:3: RULE ruleName= name ( rule_attributes[$rule] )? ( WHEN ( ':' )? normal_lhs_block[lhs] )? rhs_chunk[$rule]
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:482:2: ( RULE ruleName= name ( rule_attributes[$rule] )? ( WHEN ( ':' )? normal_lhs_block[lhs] )? rhs_chunk[$rule] )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:483:3: RULE ruleName= name ( rule_attributes[$rule] )? ( WHEN ( ':' )? normal_lhs_block[lhs] )? rhs_chunk[$rule]
             {
-            RULE11=(Token)input.LT(1);
-            match(input,RULE,FOLLOW_RULE_in_rule950); if (failed) return rule;
-            pushFollow(FOLLOW_name_in_rule954);
+            RULE12=(Token)input.LT(1);
+            match(input,RULE,FOLLOW_RULE_in_rule1007); if (failed) return rule;
+            pushFollow(FOLLOW_name_in_rule1011);
             ruleName=name();
             _fsp--;
             if (failed) return rule;
@@ -1584,11 +1651,11 @@
               			location.setType( Location.LOCATION_RULE_HEADER );
               			debug( "start rule: " + ruleName );
               			rule = new RuleDescr( ruleName, null ); 
-              			rule.setLocation( offset(RULE11.getLine()), RULE11.getCharPositionInLine() );
-              			rule.setStartCharacter( ((CommonToken)RULE11).getStartIndex() );
+              			rule.setLocation( offset(RULE12.getLine()), RULE12.getCharPositionInLine() );
+              			rule.setStartCharacter( ((CommonToken)RULE12).getStartIndex() );
               		
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:475:3: ( rule_attributes[$rule] )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:491:3: ( rule_attributes[$rule] )?
             int alt19=2;
             int LA19_0 = input.LA(1);
 
@@ -1597,9 +1664,9 @@
             }
             switch (alt19) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:475:3: rule_attributes[$rule]
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:491:3: rule_attributes[$rule]
                     {
-                    pushFollow(FOLLOW_rule_attributes_in_rule963);
+                    pushFollow(FOLLOW_rule_attributes_in_rule1020);
                     rule_attributes(rule);
                     _fsp--;
                     if (failed) return rule;
@@ -1609,7 +1676,7 @@
 
             }
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:476:3: ( WHEN ( ':' )? normal_lhs_block[lhs] )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:492:3: ( WHEN ( ':' )? normal_lhs_block[lhs] )?
             int alt21=2;
             int LA21_0 = input.LA(1);
 
@@ -1618,22 +1685,22 @@
             }
             switch (alt21) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:477:4: WHEN ( ':' )? normal_lhs_block[lhs]
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:493:4: WHEN ( ':' )? normal_lhs_block[lhs]
                     {
-                    WHEN12=(Token)input.LT(1);
-                    match(input,WHEN,FOLLOW_WHEN_in_rule975); if (failed) return rule;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:477:9: ( ':' )?
+                    WHEN13=(Token)input.LT(1);
+                    match(input,WHEN,FOLLOW_WHEN_in_rule1032); if (failed) return rule;
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:493:9: ( ':' )?
                     int alt20=2;
                     int LA20_0 = input.LA(1);
 
-                    if ( (LA20_0==74) ) {
+                    if ( (LA20_0==75) ) {
                         alt20=1;
                     }
                     switch (alt20) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:477:9: ':'
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:493:9: ':'
                             {
-                            match(input,74,FOLLOW_74_in_rule977); if (failed) return rule;
+                            match(input,75,FOLLOW_75_in_rule1034); if (failed) return rule;
 
                             }
                             break;
@@ -1644,11 +1711,11 @@
                        
                       				this.location.setType( Location.LOCATION_LHS_BEGIN_OF_CONDITION );
                       				lhs = new AndDescr(); rule.setLhs( lhs ); 
-                      				lhs.setLocation( offset(WHEN12.getLine()), WHEN12.getCharPositionInLine() );
-                      				lhs.setStartCharacter( ((CommonToken)WHEN12).getStartIndex() );
+                      				lhs.setLocation( offset(WHEN13.getLine()), WHEN13.getCharPositionInLine() );
+                      				lhs.setStartCharacter( ((CommonToken)WHEN13).getStartIndex() );
                       			
                     }
-                    pushFollow(FOLLOW_normal_lhs_block_in_rule988);
+                    pushFollow(FOLLOW_normal_lhs_block_in_rule1045);
                     normal_lhs_block(lhs);
                     _fsp--;
                     if (failed) return rule;
@@ -1658,7 +1725,7 @@
 
             }
 
-            pushFollow(FOLLOW_rhs_chunk_in_rule998);
+            pushFollow(FOLLOW_rhs_chunk_in_rule1055);
             rhs_chunk(rule);
             _fsp--;
             if (failed) return rule;
@@ -1678,16 +1745,16 @@
 
 
     // $ANTLR start rule_attributes
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:491:1: rule_attributes[RuleDescr rule] : ( ATTRIBUTES ':' )? attr= rule_attribute ( ( ',' )? attr= rule_attribute )* ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:507:1: rule_attributes[RuleDescr rule] : ( ATTRIBUTES ':' )? attr= rule_attribute ( ( ',' )? attr= rule_attribute )* ;
     public final void rule_attributes(RuleDescr rule) throws RecognitionException {
         AttributeDescr attr = null;
 
 
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:492:2: ( ( ATTRIBUTES ':' )? attr= rule_attribute ( ( ',' )? attr= rule_attribute )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:493:2: ( ATTRIBUTES ':' )? attr= rule_attribute ( ( ',' )? attr= rule_attribute )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:508:2: ( ( ATTRIBUTES ':' )? attr= rule_attribute ( ( ',' )? attr= rule_attribute )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:509:2: ( ATTRIBUTES ':' )? attr= rule_attribute ( ( ',' )? attr= rule_attribute )*
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:493:2: ( ATTRIBUTES ':' )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:509:2: ( ATTRIBUTES ':' )?
             int alt22=2;
             int LA22_0 = input.LA(1);
 
@@ -1696,24 +1763,24 @@
             }
             switch (alt22) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:493:4: ATTRIBUTES ':'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:509:4: ATTRIBUTES ':'
                     {
-                    match(input,ATTRIBUTES,FOLLOW_ATTRIBUTES_in_rule_attributes1018); if (failed) return ;
-                    match(input,74,FOLLOW_74_in_rule_attributes1020); if (failed) return ;
+                    match(input,ATTRIBUTES,FOLLOW_ATTRIBUTES_in_rule_attributes1075); if (failed) return ;
+                    match(input,75,FOLLOW_75_in_rule_attributes1077); if (failed) return ;
 
                     }
                     break;
 
             }
 
-            pushFollow(FOLLOW_rule_attribute_in_rule_attributes1028);
+            pushFollow(FOLLOW_rule_attribute_in_rule_attributes1085);
             attr=rule_attribute();
             _fsp--;
             if (failed) return ;
             if ( backtracking==0 ) {
                rule.addAttribute( attr ); 
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:495:2: ( ( ',' )? attr= rule_attribute )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:511:2: ( ( ',' )? attr= rule_attribute )*
             loop24:
             do {
                 int alt24=2;
@@ -1726,9 +1793,9 @@
 
                 switch (alt24) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:495:4: ( ',' )? attr= rule_attribute
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:511:4: ( ',' )? attr= rule_attribute
             	    {
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:495:4: ( ',' )?
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:511:4: ( ',' )?
             	    int alt23=2;
             	    int LA23_0 = input.LA(1);
 
@@ -1737,16 +1804,16 @@
             	    }
             	    switch (alt23) {
             	        case 1 :
-            	            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:495:4: ','
+            	            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:511:4: ','
             	            {
-            	            match(input,COMMA,FOLLOW_COMMA_in_rule_attributes1035); if (failed) return ;
+            	            match(input,COMMA,FOLLOW_COMMA_in_rule_attributes1092); if (failed) return ;
 
             	            }
             	            break;
 
             	    }
 
-            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes1040);
+            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes1097);
             	    attr=rule_attribute();
             	    _fsp--;
             	    if (failed) return ;
@@ -1778,7 +1845,7 @@
 
 
     // $ANTLR start rule_attribute
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:500:1: rule_attribute returns [AttributeDescr attr] : (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus | a= date_effective | a= date_expires | a= enabled | a= ruleflow_group | a= lock_on_active | a= dialect );
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:516:1: rule_attribute returns [AttributeDescr attr] : (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus | a= date_effective | a= date_expires | a= enabled | a= ruleflow_group | a= lock_on_active | a= dialect );
     public final AttributeDescr rule_attribute() throws RecognitionException {
         AttributeDescr attr = null;
 
@@ -1789,7 +1856,7 @@
         		attr = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:507:2: (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus | a= date_effective | a= date_expires | a= enabled | a= ruleflow_group | a= lock_on_active | a= dialect )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:523:2: (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus | a= date_effective | a= date_expires | a= enabled | a= ruleflow_group | a= lock_on_active | a= dialect )
             int alt25=12;
             switch ( input.LA(1) ) {
             case SALIENCE:
@@ -1855,16 +1922,16 @@
             default:
                 if (backtracking>0) {failed=true; return attr;}
                 NoViableAltException nvae =
-                    new NoViableAltException("500:1: rule_attribute returns [AttributeDescr attr] : (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus | a= date_effective | a= date_expires | a= enabled | a= ruleflow_group | a= lock_on_active | a= dialect );", 25, 0, input);
+                    new NoViableAltException("516:1: rule_attribute returns [AttributeDescr attr] : (a= salience | a= no_loop | a= agenda_group | a= duration | a= activation_group | a= auto_focus | a= date_effective | a= date_expires | a= enabled | a= ruleflow_group | a= lock_on_active | a= dialect );", 25, 0, input);
 
                 throw nvae;
             }
 
             switch (alt25) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:507:4: a= salience
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:523:4: a= salience
                     {
-                    pushFollow(FOLLOW_salience_in_rule_attribute1077);
+                    pushFollow(FOLLOW_salience_in_rule_attribute1134);
                     a=salience();
                     _fsp--;
                     if (failed) return attr;
@@ -1872,9 +1939,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:508:4: a= no_loop
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:524:4: a= no_loop
                     {
-                    pushFollow(FOLLOW_no_loop_in_rule_attribute1085);
+                    pushFollow(FOLLOW_no_loop_in_rule_attribute1142);
                     a=no_loop();
                     _fsp--;
                     if (failed) return attr;
@@ -1882,9 +1949,9 @@
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:509:4: a= agenda_group
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:525:4: a= agenda_group
                     {
-                    pushFollow(FOLLOW_agenda_group_in_rule_attribute1094);
+                    pushFollow(FOLLOW_agenda_group_in_rule_attribute1151);
                     a=agenda_group();
                     _fsp--;
                     if (failed) return attr;
@@ -1892,9 +1959,9 @@
                     }
                     break;
                 case 4 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:510:4: a= duration
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:526:4: a= duration
                     {
-                    pushFollow(FOLLOW_duration_in_rule_attribute1103);
+                    pushFollow(FOLLOW_duration_in_rule_attribute1160);
                     a=duration();
                     _fsp--;
                     if (failed) return attr;
@@ -1902,9 +1969,9 @@
                     }
                     break;
                 case 5 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:511:4: a= activation_group
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:527:4: a= activation_group
                     {
-                    pushFollow(FOLLOW_activation_group_in_rule_attribute1112);
+                    pushFollow(FOLLOW_activation_group_in_rule_attribute1169);
                     a=activation_group();
                     _fsp--;
                     if (failed) return attr;
@@ -1912,9 +1979,9 @@
                     }
                     break;
                 case 6 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:512:4: a= auto_focus
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:528:4: a= auto_focus
                     {
-                    pushFollow(FOLLOW_auto_focus_in_rule_attribute1120);
+                    pushFollow(FOLLOW_auto_focus_in_rule_attribute1177);
                     a=auto_focus();
                     _fsp--;
                     if (failed) return attr;
@@ -1922,9 +1989,9 @@
                     }
                     break;
                 case 7 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:513:4: a= date_effective
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:529:4: a= date_effective
                     {
-                    pushFollow(FOLLOW_date_effective_in_rule_attribute1128);
+                    pushFollow(FOLLOW_date_effective_in_rule_attribute1185);
                     a=date_effective();
                     _fsp--;
                     if (failed) return attr;
@@ -1932,9 +1999,9 @@
                     }
                     break;
                 case 8 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:514:4: a= date_expires
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:530:4: a= date_expires
                     {
-                    pushFollow(FOLLOW_date_expires_in_rule_attribute1136);
+                    pushFollow(FOLLOW_date_expires_in_rule_attribute1193);
                     a=date_expires();
                     _fsp--;
                     if (failed) return attr;
@@ -1942,9 +2009,9 @@
                     }
                     break;
                 case 9 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:515:4: a= enabled
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:531:4: a= enabled
                     {
-                    pushFollow(FOLLOW_enabled_in_rule_attribute1144);
+                    pushFollow(FOLLOW_enabled_in_rule_attribute1201);
                     a=enabled();
                     _fsp--;
                     if (failed) return attr;
@@ -1952,9 +2019,9 @@
                     }
                     break;
                 case 10 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:516:4: a= ruleflow_group
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:532:4: a= ruleflow_group
                     {
-                    pushFollow(FOLLOW_ruleflow_group_in_rule_attribute1152);
+                    pushFollow(FOLLOW_ruleflow_group_in_rule_attribute1209);
                     a=ruleflow_group();
                     _fsp--;
                     if (failed) return attr;
@@ -1962,9 +2029,9 @@
                     }
                     break;
                 case 11 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:517:4: a= lock_on_active
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:533:4: a= lock_on_active
                     {
-                    pushFollow(FOLLOW_lock_on_active_in_rule_attribute1160);
+                    pushFollow(FOLLOW_lock_on_active_in_rule_attribute1217);
                     a=lock_on_active();
                     _fsp--;
                     if (failed) return attr;
@@ -1972,9 +2039,9 @@
                     }
                     break;
                 case 12 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:518:4: a= dialect
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:534:4: a= dialect
                     {
-                    pushFollow(FOLLOW_dialect_in_rule_attribute1167);
+                    pushFollow(FOLLOW_dialect_in_rule_attribute1224);
                     a=dialect();
                     _fsp--;
                     if (failed) return attr;
@@ -2001,30 +2068,30 @@
 
 
     // $ANTLR start date_effective
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:521:1: date_effective returns [AttributeDescr descr] : DATE_EFFECTIVE STRING ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:537:1: date_effective returns [AttributeDescr descr] : DATE_EFFECTIVE STRING ;
     public final AttributeDescr date_effective() throws RecognitionException {
         AttributeDescr descr = null;
 
-        Token STRING13=null;
-        Token DATE_EFFECTIVE14=null;
+        Token STRING14=null;
+        Token DATE_EFFECTIVE15=null;
 
 
         		descr = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:525:2: ( DATE_EFFECTIVE STRING )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:526:3: DATE_EFFECTIVE STRING
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:541:2: ( DATE_EFFECTIVE STRING )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:542:3: DATE_EFFECTIVE STRING
             {
-            DATE_EFFECTIVE14=(Token)input.LT(1);
-            match(input,DATE_EFFECTIVE,FOLLOW_DATE_EFFECTIVE_in_date_effective1193); if (failed) return descr;
-            STRING13=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_date_effective1195); if (failed) return descr;
+            DATE_EFFECTIVE15=(Token)input.LT(1);
+            match(input,DATE_EFFECTIVE,FOLLOW_DATE_EFFECTIVE_in_date_effective1250); if (failed) return descr;
+            STRING14=(Token)input.LT(1);
+            match(input,STRING,FOLLOW_STRING_in_date_effective1252); if (failed) return descr;
             if ( backtracking==0 ) {
 
-              			descr = new AttributeDescr( "date-effective", getString( STRING13.getText() ) );
-              			descr.setLocation( offset( DATE_EFFECTIVE14.getLine() ), DATE_EFFECTIVE14.getCharPositionInLine() );
-              			descr.setStartCharacter( ((CommonToken)DATE_EFFECTIVE14).getStartIndex() );
-              			descr.setEndCharacter( ((CommonToken)STRING13).getStopIndex() );
+              			descr = new AttributeDescr( "date-effective", getString( STRING14.getText() ) );
+              			descr.setLocation( offset( DATE_EFFECTIVE15.getLine() ), DATE_EFFECTIVE15.getCharPositionInLine() );
+              			descr.setStartCharacter( ((CommonToken)DATE_EFFECTIVE15).getStartIndex() );
+              			descr.setEndCharacter( ((CommonToken)STRING14).getStopIndex() );
               		
             }
 
@@ -2043,30 +2110,30 @@
 
 
     // $ANTLR start date_expires
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:536:1: date_expires returns [AttributeDescr descr] : DATE_EXPIRES STRING ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:552:1: date_expires returns [AttributeDescr descr] : DATE_EXPIRES STRING ;
     public final AttributeDescr date_expires() throws RecognitionException {
         AttributeDescr descr = null;
 
-        Token STRING15=null;
-        Token DATE_EXPIRES16=null;
+        Token STRING16=null;
+        Token DATE_EXPIRES17=null;
 
 
         		descr = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:540:2: ( DATE_EXPIRES STRING )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:540:4: DATE_EXPIRES STRING
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:556:2: ( DATE_EXPIRES STRING )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:556:4: DATE_EXPIRES STRING
             {
-            DATE_EXPIRES16=(Token)input.LT(1);
-            match(input,DATE_EXPIRES,FOLLOW_DATE_EXPIRES_in_date_expires1224); if (failed) return descr;
-            STRING15=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_date_expires1226); if (failed) return descr;
+            DATE_EXPIRES17=(Token)input.LT(1);
+            match(input,DATE_EXPIRES,FOLLOW_DATE_EXPIRES_in_date_expires1281); if (failed) return descr;
+            STRING16=(Token)input.LT(1);
+            match(input,STRING,FOLLOW_STRING_in_date_expires1283); if (failed) return descr;
             if ( backtracking==0 ) {
 
-              			descr = new AttributeDescr( "date-expires", getString( STRING15.getText() ) );
-              			descr.setLocation( offset(DATE_EXPIRES16.getLine()), DATE_EXPIRES16.getCharPositionInLine() );
-              			descr.setStartCharacter( ((CommonToken)DATE_EXPIRES16).getStartIndex() );
-              			descr.setEndCharacter( ((CommonToken)STRING15).getStopIndex() );
+              			descr = new AttributeDescr( "date-expires", getString( STRING16.getText() ) );
+              			descr.setLocation( offset(DATE_EXPIRES17.getLine()), DATE_EXPIRES17.getCharPositionInLine() );
+              			descr.setStartCharacter( ((CommonToken)DATE_EXPIRES17).getStartIndex() );
+              			descr.setEndCharacter( ((CommonToken)STRING16).getStopIndex() );
               		
             }
 
@@ -2085,30 +2152,30 @@
 
 
     // $ANTLR start enabled
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:549:1: enabled returns [AttributeDescr descr] : ENABLED BOOL ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:565:1: enabled returns [AttributeDescr descr] : ENABLED BOOL ;
     public final AttributeDescr enabled() throws RecognitionException {
         AttributeDescr descr = null;
 
-        Token BOOL17=null;
-        Token ENABLED18=null;
+        Token BOOL18=null;
+        Token ENABLED19=null;
 
 
         		descr = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:553:2: ( ENABLED BOOL )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:553:5: ENABLED BOOL
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:569:2: ( ENABLED BOOL )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:569:5: ENABLED BOOL
             {
-            ENABLED18=(Token)input.LT(1);
-            match(input,ENABLED,FOLLOW_ENABLED_in_enabled1255); if (failed) return descr;
-            BOOL17=(Token)input.LT(1);
-            match(input,BOOL,FOLLOW_BOOL_in_enabled1257); if (failed) return descr;
+            ENABLED19=(Token)input.LT(1);
+            match(input,ENABLED,FOLLOW_ENABLED_in_enabled1312); if (failed) return descr;
+            BOOL18=(Token)input.LT(1);
+            match(input,BOOL,FOLLOW_BOOL_in_enabled1314); if (failed) return descr;
             if ( backtracking==0 ) {
 
-              				descr = new AttributeDescr( "enabled", BOOL17.getText() );
-              				descr.setLocation( offset(ENABLED18.getLine()), ENABLED18.getCharPositionInLine() );
-              				descr.setStartCharacter( ((CommonToken)ENABLED18).getStartIndex() );
-              				descr.setEndCharacter( ((CommonToken)BOOL17).getStopIndex() );
+              				descr = new AttributeDescr( "enabled", BOOL18.getText() );
+              				descr.setLocation( offset(ENABLED19.getLine()), ENABLED19.getCharPositionInLine() );
+              				descr.setStartCharacter( ((CommonToken)ENABLED19).getStartIndex() );
+              				descr.setEndCharacter( ((CommonToken)BOOL18).getStopIndex() );
               			
             }
 
@@ -2127,12 +2194,12 @@
 
 
     // $ANTLR start salience
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:562:1: salience returns [AttributeDescr descr] : SALIENCE ( INT | txt= paren_chunk ) ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:578:1: salience returns [AttributeDescr descr] : SALIENCE ( INT | txt= paren_chunk ) ;
     public final AttributeDescr salience() throws RecognitionException {
         AttributeDescr descr = null;
 
-        Token SALIENCE19=null;
-        Token INT20=null;
+        Token SALIENCE20=null;
+        Token INT21=null;
         paren_chunk_return txt = null;
 
 
@@ -2140,19 +2207,19 @@
         		descr = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:566:2: ( SALIENCE ( INT | txt= paren_chunk ) )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:567:3: SALIENCE ( INT | txt= paren_chunk )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:582:2: ( SALIENCE ( INT | txt= paren_chunk ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:583:3: SALIENCE ( INT | txt= paren_chunk )
             {
-            SALIENCE19=(Token)input.LT(1);
-            match(input,SALIENCE,FOLLOW_SALIENCE_in_salience1290); if (failed) return descr;
+            SALIENCE20=(Token)input.LT(1);
+            match(input,SALIENCE,FOLLOW_SALIENCE_in_salience1347); if (failed) return descr;
             if ( backtracking==0 ) {
 
               			descr = new AttributeDescr( "salience" );
-              			descr.setLocation( offset(SALIENCE19.getLine()), SALIENCE19.getCharPositionInLine() );
-              			descr.setStartCharacter( ((CommonToken)SALIENCE19).getStartIndex() );
+              			descr.setLocation( offset(SALIENCE20.getLine()), SALIENCE20.getCharPositionInLine() );
+              			descr.setStartCharacter( ((CommonToken)SALIENCE20).getStartIndex() );
               		
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:573:3: ( INT | txt= paren_chunk )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:589:3: ( INT | txt= paren_chunk )
             int alt26=2;
             int LA26_0 = input.LA(1);
 
@@ -2165,29 +2232,29 @@
             else {
                 if (backtracking>0) {failed=true; return descr;}
                 NoViableAltException nvae =
-                    new NoViableAltException("573:3: ( INT | txt= paren_chunk )", 26, 0, input);
+                    new NoViableAltException("589:3: ( INT | txt= paren_chunk )", 26, 0, input);
 
                 throw nvae;
             }
             switch (alt26) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:573:5: INT
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:589:5: INT
                     {
-                    INT20=(Token)input.LT(1);
-                    match(input,INT,FOLLOW_INT_in_salience1301); if (failed) return descr;
+                    INT21=(Token)input.LT(1);
+                    match(input,INT,FOLLOW_INT_in_salience1358); if (failed) return descr;
                     if ( backtracking==0 ) {
 
-                      			descr.setValue( INT20.getText() );
-                      			descr.setEndCharacter( ((CommonToken)INT20).getStopIndex() );
+                      			descr.setValue( INT21.getText() );
+                      			descr.setEndCharacter( ((CommonToken)INT21).getStopIndex() );
                       		
                     }
 
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:578:5: txt= paren_chunk
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:594:5: txt= paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_salience1316);
+                    pushFollow(FOLLOW_paren_chunk_in_salience1373);
                     txt=paren_chunk();
                     _fsp--;
                     if (failed) return descr;
@@ -2219,31 +2286,31 @@
 
 
     // $ANTLR start no_loop
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:586:1: no_loop returns [AttributeDescr descr] : NO_LOOP ( BOOL )? ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:602:1: no_loop returns [AttributeDescr descr] : NO_LOOP ( BOOL )? ;
     public final AttributeDescr no_loop() throws RecognitionException {
         AttributeDescr descr = null;
 
-        Token NO_LOOP21=null;
-        Token BOOL22=null;
+        Token NO_LOOP22=null;
+        Token BOOL23=null;
 
 
         		descr = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:590:2: ( NO_LOOP ( BOOL )? )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:590:4: NO_LOOP ( BOOL )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:606:2: ( NO_LOOP ( BOOL )? )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:606:4: NO_LOOP ( BOOL )?
             {
-            NO_LOOP21=(Token)input.LT(1);
-            match(input,NO_LOOP,FOLLOW_NO_LOOP_in_no_loop1346); if (failed) return descr;
+            NO_LOOP22=(Token)input.LT(1);
+            match(input,NO_LOOP,FOLLOW_NO_LOOP_in_no_loop1403); if (failed) return descr;
             if ( backtracking==0 ) {
 
               			descr = new AttributeDescr( "no-loop", "true" );
-              			descr.setLocation( offset(NO_LOOP21.getLine()), NO_LOOP21.getCharPositionInLine() );
-              			descr.setStartCharacter( ((CommonToken)NO_LOOP21).getStartIndex() );
-              			descr.setEndCharacter( ((CommonToken)NO_LOOP21).getStopIndex() );
+              			descr.setLocation( offset(NO_LOOP22.getLine()), NO_LOOP22.getCharPositionInLine() );
+              			descr.setStartCharacter( ((CommonToken)NO_LOOP22).getStartIndex() );
+              			descr.setEndCharacter( ((CommonToken)NO_LOOP22).getStopIndex() );
               		
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:597:3: ( BOOL )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:613:3: ( BOOL )?
             int alt27=2;
             int LA27_0 = input.LA(1);
 
@@ -2252,14 +2319,14 @@
             }
             switch (alt27) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:597:5: BOOL
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:613:5: BOOL
                     {
-                    BOOL22=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_no_loop1359); if (failed) return descr;
+                    BOOL23=(Token)input.LT(1);
+                    match(input,BOOL,FOLLOW_BOOL_in_no_loop1416); if (failed) return descr;
                     if ( backtracking==0 ) {
 
-                      				descr.setValue( BOOL22.getText() );
-                      				descr.setEndCharacter( ((CommonToken)BOOL22).getStopIndex() );
+                      				descr.setValue( BOOL23.getText() );
+                      				descr.setEndCharacter( ((CommonToken)BOOL23).getStopIndex() );
                       			
                     }
 
@@ -2284,31 +2351,31 @@
 
 
     // $ANTLR start auto_focus
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:605:1: auto_focus returns [AttributeDescr descr] : AUTO_FOCUS ( BOOL )? ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:621:1: auto_focus returns [AttributeDescr descr] : AUTO_FOCUS ( BOOL )? ;
     public final AttributeDescr auto_focus() throws RecognitionException {
         AttributeDescr descr = null;
 
-        Token AUTO_FOCUS23=null;
-        Token BOOL24=null;
+        Token AUTO_FOCUS24=null;
+        Token BOOL25=null;
 
 
         		descr = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:609:2: ( AUTO_FOCUS ( BOOL )? )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:609:4: AUTO_FOCUS ( BOOL )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:625:2: ( AUTO_FOCUS ( BOOL )? )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:625:4: AUTO_FOCUS ( BOOL )?
             {
-            AUTO_FOCUS23=(Token)input.LT(1);
-            match(input,AUTO_FOCUS,FOLLOW_AUTO_FOCUS_in_auto_focus1394); if (failed) return descr;
+            AUTO_FOCUS24=(Token)input.LT(1);
+            match(input,AUTO_FOCUS,FOLLOW_AUTO_FOCUS_in_auto_focus1451); if (failed) return descr;
             if ( backtracking==0 ) {
 
               			descr = new AttributeDescr( "auto-focus", "true" );
-              			descr.setLocation( offset(AUTO_FOCUS23.getLine()), AUTO_FOCUS23.getCharPositionInLine() );
-              			descr.setStartCharacter( ((CommonToken)AUTO_FOCUS23).getStartIndex() );
-              			descr.setEndCharacter( ((CommonToken)AUTO_FOCUS23).getStopIndex() );
+              			descr.setLocation( offset(AUTO_FOCUS24.getLine()), AUTO_FOCUS24.getCharPositionInLine() );
+              			descr.setStartCharacter( ((CommonToken)AUTO_FOCUS24).getStartIndex() );
+              			descr.setEndCharacter( ((CommonToken)AUTO_FOCUS24).getStopIndex() );
               		
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:616:3: ( BOOL )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:632:3: ( BOOL )?
             int alt28=2;
             int LA28_0 = input.LA(1);
 
@@ -2317,14 +2384,14 @@
             }
             switch (alt28) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:616:5: BOOL
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:632:5: BOOL
                     {
-                    BOOL24=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_auto_focus1407); if (failed) return descr;
+                    BOOL25=(Token)input.LT(1);
+                    match(input,BOOL,FOLLOW_BOOL_in_auto_focus1464); if (failed) return descr;
                     if ( backtracking==0 ) {
 
-                      				descr.setValue( BOOL24.getText() );
-                      				descr.setEndCharacter( ((CommonToken)BOOL24).getStopIndex() );
+                      				descr.setValue( BOOL25.getText() );
+                      				descr.setEndCharacter( ((CommonToken)BOOL25).getStopIndex() );
                       			
                     }
 
@@ -2349,30 +2416,30 @@
 
 
     // $ANTLR start activation_group
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:624:1: activation_group returns [AttributeDescr descr] : ACTIVATION_GROUP STRING ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:640:1: activation_group returns [AttributeDescr descr] : ACTIVATION_GROUP STRING ;
     public final AttributeDescr activation_group() throws RecognitionException {
         AttributeDescr descr = null;
 
-        Token STRING25=null;
-        Token ACTIVATION_GROUP26=null;
+        Token STRING26=null;
+        Token ACTIVATION_GROUP27=null;
 
 
         		descr = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:628:2: ( ACTIVATION_GROUP STRING )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:628:4: ACTIVATION_GROUP STRING
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:644:2: ( ACTIVATION_GROUP STRING )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:644:4: ACTIVATION_GROUP STRING
             {
-            ACTIVATION_GROUP26=(Token)input.LT(1);
-            match(input,ACTIVATION_GROUP,FOLLOW_ACTIVATION_GROUP_in_activation_group1443); if (failed) return descr;
-            STRING25=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_activation_group1445); if (failed) return descr;
+            ACTIVATION_GROUP27=(Token)input.LT(1);
+            match(input,ACTIVATION_GROUP,FOLLOW_ACTIVATION_GROUP_in_activation_group1500); if (failed) return descr;
+            STRING26=(Token)input.LT(1);
+            match(input,STRING,FOLLOW_STRING_in_activation_group1502); if (failed) return descr;
             if ( backtracking==0 ) {
 
-              			descr = new AttributeDescr( "activation-group", getString( STRING25.getText() ) );
-              			descr.setLocation( offset(ACTIVATION_GROUP26.getLine()), ACTIVATION_GROUP26.getCharPositionInLine() );
-              			descr.setStartCharacter( ((CommonToken)ACTIVATION_GROUP26).getStartIndex() );
-              			descr.setEndCharacter( ((CommonToken)STRING25).getStopIndex() );
+              			descr = new AttributeDescr( "activation-group", getString( STRING26.getText() ) );
+              			descr.setLocation( offset(ACTIVATION_GROUP27.getLine()), ACTIVATION_GROUP27.getCharPositionInLine() );
+              			descr.setStartCharacter( ((CommonToken)ACTIVATION_GROUP27).getStartIndex() );
+              			descr.setEndCharacter( ((CommonToken)STRING26).getStopIndex() );
               		
             }
 
@@ -2391,30 +2458,30 @@
 
 
     // $ANTLR start ruleflow_group
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:637:1: ruleflow_group returns [AttributeDescr descr] : RULEFLOW_GROUP STRING ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:653:1: ruleflow_group returns [AttributeDescr descr] : RULEFLOW_GROUP STRING ;
     public final AttributeDescr ruleflow_group() throws RecognitionException {
         AttributeDescr descr = null;
 
-        Token STRING27=null;
-        Token RULEFLOW_GROUP28=null;
+        Token STRING28=null;
+        Token RULEFLOW_GROUP29=null;
 
 
         		descr = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:641:2: ( RULEFLOW_GROUP STRING )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:641:4: RULEFLOW_GROUP STRING
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:657:2: ( RULEFLOW_GROUP STRING )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:657:4: RULEFLOW_GROUP STRING
             {
-            RULEFLOW_GROUP28=(Token)input.LT(1);
-            match(input,RULEFLOW_GROUP,FOLLOW_RULEFLOW_GROUP_in_ruleflow_group1473); if (failed) return descr;
-            STRING27=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_ruleflow_group1475); if (failed) return descr;
+            RULEFLOW_GROUP29=(Token)input.LT(1);
+            match(input,RULEFLOW_GROUP,FOLLOW_RULEFLOW_GROUP_in_ruleflow_group1530); if (failed) return descr;
+            STRING28=(Token)input.LT(1);
+            match(input,STRING,FOLLOW_STRING_in_ruleflow_group1532); if (failed) return descr;
             if ( backtracking==0 ) {
 
-              			descr = new AttributeDescr( "ruleflow-group", getString( STRING27.getText() ) );
-              			descr.setLocation( offset(RULEFLOW_GROUP28.getLine()), RULEFLOW_GROUP28.getCharPositionInLine() );
-              			descr.setStartCharacter( ((CommonToken)RULEFLOW_GROUP28).getStartIndex() );
-              			descr.setEndCharacter( ((CommonToken)STRING27).getStopIndex() );
+              			descr = new AttributeDescr( "ruleflow-group", getString( STRING28.getText() ) );
+              			descr.setLocation( offset(RULEFLOW_GROUP29.getLine()), RULEFLOW_GROUP29.getCharPositionInLine() );
+              			descr.setStartCharacter( ((CommonToken)RULEFLOW_GROUP29).getStartIndex() );
+              			descr.setEndCharacter( ((CommonToken)STRING28).getStopIndex() );
               		
             }
 
@@ -2433,30 +2500,30 @@
 
 
     // $ANTLR start agenda_group
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:650:1: agenda_group returns [AttributeDescr descr] : AGENDA_GROUP STRING ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:666:1: agenda_group returns [AttributeDescr descr] : AGENDA_GROUP STRING ;
     public final AttributeDescr agenda_group() throws RecognitionException {
         AttributeDescr descr = null;
 
-        Token STRING29=null;
-        Token AGENDA_GROUP30=null;
+        Token STRING30=null;
+        Token AGENDA_GROUP31=null;
 
 
         		descr = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:654:2: ( AGENDA_GROUP STRING )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:654:4: AGENDA_GROUP STRING
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:670:2: ( AGENDA_GROUP STRING )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:670:4: AGENDA_GROUP STRING
             {
-            AGENDA_GROUP30=(Token)input.LT(1);
-            match(input,AGENDA_GROUP,FOLLOW_AGENDA_GROUP_in_agenda_group1503); if (failed) return descr;
-            STRING29=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_agenda_group1505); if (failed) return descr;
+            AGENDA_GROUP31=(Token)input.LT(1);
+            match(input,AGENDA_GROUP,FOLLOW_AGENDA_GROUP_in_agenda_group1560); if (failed) return descr;
+            STRING30=(Token)input.LT(1);
+            match(input,STRING,FOLLOW_STRING_in_agenda_group1562); if (failed) return descr;
             if ( backtracking==0 ) {
 
-              			descr = new AttributeDescr( "agenda-group", getString( STRING29.getText() ) );
-              			descr.setLocation( offset(AGENDA_GROUP30.getLine()), AGENDA_GROUP30.getCharPositionInLine() );
-              			descr.setStartCharacter( ((CommonToken)AGENDA_GROUP30).getStartIndex() );
-              			descr.setEndCharacter( ((CommonToken)STRING29).getStopIndex() );
+              			descr = new AttributeDescr( "agenda-group", getString( STRING30.getText() ) );
+              			descr.setLocation( offset(AGENDA_GROUP31.getLine()), AGENDA_GROUP31.getCharPositionInLine() );
+              			descr.setStartCharacter( ((CommonToken)AGENDA_GROUP31).getStartIndex() );
+              			descr.setEndCharacter( ((CommonToken)STRING30).getStopIndex() );
               		
             }
 
@@ -2475,30 +2542,30 @@
 
 
     // $ANTLR start duration
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:663:1: duration returns [AttributeDescr descr] : DURATION INT ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:679:1: duration returns [AttributeDescr descr] : DURATION INT ;
     public final AttributeDescr duration() throws RecognitionException {
         AttributeDescr descr = null;
 
-        Token INT31=null;
-        Token DURATION32=null;
+        Token INT32=null;
+        Token DURATION33=null;
 
 
         		descr = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:667:2: ( DURATION INT )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:667:4: DURATION INT
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:683:2: ( DURATION INT )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:683:4: DURATION INT
             {
-            DURATION32=(Token)input.LT(1);
-            match(input,DURATION,FOLLOW_DURATION_in_duration1533); if (failed) return descr;
-            INT31=(Token)input.LT(1);
-            match(input,INT,FOLLOW_INT_in_duration1535); if (failed) return descr;
+            DURATION33=(Token)input.LT(1);
+            match(input,DURATION,FOLLOW_DURATION_in_duration1590); if (failed) return descr;
+            INT32=(Token)input.LT(1);
+            match(input,INT,FOLLOW_INT_in_duration1592); if (failed) return descr;
             if ( backtracking==0 ) {
 
-              			descr = new AttributeDescr( "duration", INT31.getText() );
-              			descr.setLocation( offset(DURATION32.getLine()), DURATION32.getCharPositionInLine() );
-              			descr.setStartCharacter( ((CommonToken)DURATION32).getStartIndex() );
-              			descr.setEndCharacter( ((CommonToken)INT31).getStopIndex() );
+              			descr = new AttributeDescr( "duration", INT32.getText() );
+              			descr.setLocation( offset(DURATION33.getLine()), DURATION33.getCharPositionInLine() );
+              			descr.setStartCharacter( ((CommonToken)DURATION33).getStartIndex() );
+              			descr.setEndCharacter( ((CommonToken)INT32).getStopIndex() );
               		
             }
 
@@ -2517,30 +2584,30 @@
 
 
     // $ANTLR start dialect
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:676:1: dialect returns [AttributeDescr descr] : DIALECT STRING ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:692:1: dialect returns [AttributeDescr descr] : DIALECT STRING ;
     public final AttributeDescr dialect() throws RecognitionException {
         AttributeDescr descr = null;
 
-        Token STRING33=null;
-        Token DIALECT34=null;
+        Token STRING34=null;
+        Token DIALECT35=null;
 
 
         		descr = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:680:2: ( DIALECT STRING )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:680:4: DIALECT STRING
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:696:2: ( DIALECT STRING )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:696:4: DIALECT STRING
             {
-            DIALECT34=(Token)input.LT(1);
-            match(input,DIALECT,FOLLOW_DIALECT_in_dialect1563); if (failed) return descr;
-            STRING33=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_dialect1565); if (failed) return descr;
+            DIALECT35=(Token)input.LT(1);
+            match(input,DIALECT,FOLLOW_DIALECT_in_dialect1620); if (failed) return descr;
+            STRING34=(Token)input.LT(1);
+            match(input,STRING,FOLLOW_STRING_in_dialect1622); if (failed) return descr;
             if ( backtracking==0 ) {
 
-              			descr = new AttributeDescr( "dialect", getString( STRING33.getText() ) );
-              			descr.setLocation( offset(DIALECT34.getLine()), DIALECT34.getCharPositionInLine() );
-              			descr.setStartCharacter( ((CommonToken)DIALECT34).getStartIndex() );
-              			descr.setEndCharacter( ((CommonToken)STRING33).getStopIndex() );
+              			descr = new AttributeDescr( "dialect", getString( STRING34.getText() ) );
+              			descr.setLocation( offset(DIALECT35.getLine()), DIALECT35.getCharPositionInLine() );
+              			descr.setStartCharacter( ((CommonToken)DIALECT35).getStartIndex() );
+              			descr.setEndCharacter( ((CommonToken)STRING34).getStopIndex() );
               		
             }
 
@@ -2559,31 +2626,31 @@
 
 
     // $ANTLR start lock_on_active
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:689:1: lock_on_active returns [AttributeDescr descr] : LOCK_ON_ACTIVE ( BOOL )? ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:705:1: lock_on_active returns [AttributeDescr descr] : LOCK_ON_ACTIVE ( BOOL )? ;
     public final AttributeDescr lock_on_active() throws RecognitionException {
         AttributeDescr descr = null;
 
-        Token LOCK_ON_ACTIVE35=null;
-        Token BOOL36=null;
+        Token LOCK_ON_ACTIVE36=null;
+        Token BOOL37=null;
 
 
         		descr = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:693:2: ( LOCK_ON_ACTIVE ( BOOL )? )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:693:4: LOCK_ON_ACTIVE ( BOOL )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:709:2: ( LOCK_ON_ACTIVE ( BOOL )? )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:709:4: LOCK_ON_ACTIVE ( BOOL )?
             {
-            LOCK_ON_ACTIVE35=(Token)input.LT(1);
-            match(input,LOCK_ON_ACTIVE,FOLLOW_LOCK_ON_ACTIVE_in_lock_on_active1597); if (failed) return descr;
+            LOCK_ON_ACTIVE36=(Token)input.LT(1);
+            match(input,LOCK_ON_ACTIVE,FOLLOW_LOCK_ON_ACTIVE_in_lock_on_active1654); if (failed) return descr;
             if ( backtracking==0 ) {
 
               			descr = new AttributeDescr( "lock-on-active", "true" );
-              			descr.setLocation( offset(LOCK_ON_ACTIVE35.getLine()), LOCK_ON_ACTIVE35.getCharPositionInLine() );
-              			descr.setStartCharacter( ((CommonToken)LOCK_ON_ACTIVE35).getStartIndex() );
-              			descr.setEndCharacter( ((CommonToken)LOCK_ON_ACTIVE35).getStopIndex() );
+              			descr.setLocation( offset(LOCK_ON_ACTIVE36.getLine()), LOCK_ON_ACTIVE36.getCharPositionInLine() );
+              			descr.setStartCharacter( ((CommonToken)LOCK_ON_ACTIVE36).getStartIndex() );
+              			descr.setEndCharacter( ((CommonToken)LOCK_ON_ACTIVE36).getStopIndex() );
               		
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:700:3: ( BOOL )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:716:3: ( BOOL )?
             int alt29=2;
             int LA29_0 = input.LA(1);
 
@@ -2592,14 +2659,14 @@
             }
             switch (alt29) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:700:5: BOOL
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:716:5: BOOL
                     {
-                    BOOL36=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_lock_on_active1610); if (failed) return descr;
+                    BOOL37=(Token)input.LT(1);
+                    match(input,BOOL,FOLLOW_BOOL_in_lock_on_active1667); if (failed) return descr;
                     if ( backtracking==0 ) {
 
-                      				descr.setValue( BOOL36.getText() );
-                      				descr.setEndCharacter( ((CommonToken)BOOL36).getStopIndex() );
+                      				descr.setValue( BOOL37.getText() );
+                      				descr.setEndCharacter( ((CommonToken)BOOL37).getStopIndex() );
                       			
                     }
 
@@ -2624,7 +2691,7 @@
 
 
     // $ANTLR start normal_lhs_block
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:708:1: normal_lhs_block[AndDescr descr] : (d= lhs[$descr] )* ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:724:1: normal_lhs_block[AndDescr descr] : (d= lhs[$descr] )* ;
     public final void normal_lhs_block(AndDescr descr) throws RecognitionException {
         BaseDescr d = null;
 
@@ -2633,10 +2700,10 @@
         		location.setType( Location.LOCATION_LHS_BEGIN_OF_CONDITION );
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:712:2: ( (d= lhs[$descr] )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:713:3: (d= lhs[$descr] )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:728:2: ( (d= lhs[$descr] )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:729:3: (d= lhs[$descr] )*
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:713:3: (d= lhs[$descr] )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:729:3: (d= lhs[$descr] )*
             loop30:
             do {
                 int alt30=2;
@@ -2649,9 +2716,9 @@
 
                 switch (alt30) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:713:5: d= lhs[$descr]
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:729:5: d= lhs[$descr]
             	    {
-            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block1649);
+            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block1706);
             	    d=lhs(descr);
             	    _fsp--;
             	    if (failed) return ;
@@ -2683,7 +2750,7 @@
 
 
     // $ANTLR start lhs
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:719:1: lhs[ConditionalElementDescr ce] returns [BaseDescr d] : l= lhs_or ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:735:1: lhs[ConditionalElementDescr ce] returns [BaseDescr d] : l= lhs_or ;
     public final BaseDescr lhs(ConditionalElementDescr ce) throws RecognitionException {
         BaseDescr d = null;
 
@@ -2694,10 +2761,10 @@
         		d =null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:723:2: (l= lhs_or )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:723:4: l= lhs_or
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:739:2: (l= lhs_or )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:739:4: l= lhs_or
             {
-            pushFollow(FOLLOW_lhs_or_in_lhs1686);
+            pushFollow(FOLLOW_lhs_or_in_lhs1743);
             l=lhs_or();
             _fsp--;
             if (failed) return d;
@@ -2720,7 +2787,7 @@
 
 
     // $ANTLR start lhs_or
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:727:1: lhs_or returns [BaseDescr d] : ( LEFT_PAREN OR (lhsand= lhs_and )+ RIGHT_PAREN | left= lhs_and ( ( OR | DOUBLE_PIPE ) right= lhs_and )* );
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:743:1: lhs_or returns [BaseDescr d] : ( LEFT_PAREN OR (lhsand= lhs_and )+ RIGHT_PAREN | left= lhs_and ( ( OR | DOUBLE_PIPE ) right= lhs_and )* );
     public final BaseDescr lhs_or() throws RecognitionException {
         BaseDescr d = null;
 
@@ -2736,23 +2803,23 @@
         		OrDescr or = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:732:2: ( LEFT_PAREN OR (lhsand= lhs_and )+ RIGHT_PAREN | left= lhs_and ( ( OR | DOUBLE_PIPE ) right= lhs_and )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:748:2: ( LEFT_PAREN OR (lhsand= lhs_and )+ RIGHT_PAREN | left= lhs_and ( ( OR | DOUBLE_PIPE ) right= lhs_and )* )
             int alt33=2;
             int LA33_0 = input.LA(1);
 
             if ( (LA33_0==LEFT_PAREN) ) {
                 int LA33_1 = input.LA(2);
 
-                if ( (LA33_1==ID||LA33_1==LEFT_PAREN||LA33_1==AND||(LA33_1>=EXISTS && LA33_1<=FORALL)) ) {
+                if ( (LA33_1==OR) ) {
+                    alt33=1;
+                }
+                else if ( (LA33_1==ID||LA33_1==LEFT_PAREN||LA33_1==AND||(LA33_1>=EXISTS && LA33_1<=FORALL)) ) {
                     alt33=2;
                 }
-                else if ( (LA33_1==OR) ) {
-                    alt33=1;
-                }
                 else {
                     if (backtracking>0) {failed=true; return d;}
                     NoViableAltException nvae =
-                        new NoViableAltException("727:1: lhs_or returns [BaseDescr d] : ( LEFT_PAREN OR (lhsand= lhs_and )+ RIGHT_PAREN | left= lhs_and ( ( OR | DOUBLE_PIPE ) right= lhs_and )* );", 33, 1, input);
+                        new NoViableAltException("743:1: lhs_or returns [BaseDescr d] : ( LEFT_PAREN OR (lhsand= lhs_and )+ RIGHT_PAREN | left= lhs_and ( ( OR | DOUBLE_PIPE ) right= lhs_and )* );", 33, 1, input);
 
                     throw nvae;
                 }
@@ -2763,16 +2830,16 @@
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("727:1: lhs_or returns [BaseDescr d] : ( LEFT_PAREN OR (lhsand= lhs_and )+ RIGHT_PAREN | left= lhs_and ( ( OR | DOUBLE_PIPE ) right= lhs_and )* );", 33, 0, input);
+                    new NoViableAltException("743:1: lhs_or returns [BaseDescr d] : ( LEFT_PAREN OR (lhsand= lhs_and )+ RIGHT_PAREN | left= lhs_and ( ( OR | DOUBLE_PIPE ) right= lhs_and )* );", 33, 0, input);
 
                 throw nvae;
             }
             switch (alt33) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:732:4: LEFT_PAREN OR (lhsand= lhs_and )+ RIGHT_PAREN
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:748:4: LEFT_PAREN OR (lhsand= lhs_and )+ RIGHT_PAREN
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or1711); if (failed) return d;
-                    match(input,OR,FOLLOW_OR_in_lhs_or1713); if (failed) return d;
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or1768); if (failed) return d;
+                    match(input,OR,FOLLOW_OR_in_lhs_or1770); if (failed) return d;
                     if ( backtracking==0 ) {
 
                       			or = new OrDescr();
@@ -2780,7 +2847,7 @@
                       			location.setType( Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR );
                       		
                     }
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:738:3: (lhsand= lhs_and )+
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:754:3: (lhsand= lhs_and )+
                     int cnt31=0;
                     loop31:
                     do {
@@ -2794,9 +2861,9 @@
 
                         switch (alt31) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:738:5: lhsand= lhs_and
+                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:754:5: lhsand= lhs_and
                     	    {
-                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or1726);
+                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or1783);
                     	    lhsand=lhs_and();
                     	    _fsp--;
                     	    if (failed) return d;
@@ -2819,21 +2886,21 @@
                         cnt31++;
                     } while (true);
 
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or1737); if (failed) return d;
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or1794); if (failed) return d;
 
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:744:10: left= lhs_and ( ( OR | DOUBLE_PIPE ) right= lhs_and )*
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:760:10: left= lhs_and ( ( OR | DOUBLE_PIPE ) right= lhs_and )*
                     {
-                    pushFollow(FOLLOW_lhs_and_in_lhs_or1755);
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or1812);
                     left=lhs_and();
                     _fsp--;
                     if (failed) return d;
                     if ( backtracking==0 ) {
                        d = left; 
                     }
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:745:3: ( ( OR | DOUBLE_PIPE ) right= lhs_and )*
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:761:3: ( ( OR | DOUBLE_PIPE ) right= lhs_and )*
                     loop32:
                     do {
                         int alt32=2;
@@ -2846,7 +2913,7 @@
 
                         switch (alt32) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:745:5: ( OR | DOUBLE_PIPE ) right= lhs_and
+                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:761:5: ( OR | DOUBLE_PIPE ) right= lhs_and
                     	    {
                     	    if ( (input.LA(1)>=OR && input.LA(1)<=DOUBLE_PIPE) ) {
                     	        input.consume();
@@ -2856,7 +2923,7 @@
                     	        if (backtracking>0) {failed=true; return d;}
                     	        MismatchedSetException mse =
                     	            new MismatchedSetException(null,input);
-                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_or1763);    throw mse;
+                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_or1820);    throw mse;
                     	    }
 
                     	    if ( backtracking==0 ) {
@@ -2864,7 +2931,7 @@
                     	      				location.setType( Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR );
                     	      			
                     	    }
-                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or1779);
+                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or1836);
                     	    right=lhs_and();
                     	    _fsp--;
                     	    if (failed) return d;
@@ -2906,7 +2973,7 @@
 
 
     // $ANTLR start lhs_and
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:762:1: lhs_and returns [BaseDescr d] : ( LEFT_PAREN AND (lhsunary= lhs_unary )+ RIGHT_PAREN | left= lhs_unary ( ( AND | DOUBLE_AMPER ) right= lhs_unary )* );
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:778:1: lhs_and returns [BaseDescr d] : ( LEFT_PAREN AND (lhsunary= lhs_unary )+ RIGHT_PAREN | left= lhs_unary ( ( AND | DOUBLE_AMPER ) right= lhs_unary )* );
     public final BaseDescr lhs_and() throws RecognitionException {
         BaseDescr d = null;
 
@@ -2922,7 +2989,7 @@
         		AndDescr and = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:767:2: ( LEFT_PAREN AND (lhsunary= lhs_unary )+ RIGHT_PAREN | left= lhs_unary ( ( AND | DOUBLE_AMPER ) right= lhs_unary )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:783:2: ( LEFT_PAREN AND (lhsunary= lhs_unary )+ RIGHT_PAREN | left= lhs_unary ( ( AND | DOUBLE_AMPER ) right= lhs_unary )* )
             int alt36=2;
             int LA36_0 = input.LA(1);
 
@@ -2938,7 +3005,7 @@
                 else {
                     if (backtracking>0) {failed=true; return d;}
                     NoViableAltException nvae =
-                        new NoViableAltException("762:1: lhs_and returns [BaseDescr d] : ( LEFT_PAREN AND (lhsunary= lhs_unary )+ RIGHT_PAREN | left= lhs_unary ( ( AND | DOUBLE_AMPER ) right= lhs_unary )* );", 36, 1, input);
+                        new NoViableAltException("778:1: lhs_and returns [BaseDescr d] : ( LEFT_PAREN AND (lhsunary= lhs_unary )+ RIGHT_PAREN | left= lhs_unary ( ( AND | DOUBLE_AMPER ) right= lhs_unary )* );", 36, 1, input);
 
                     throw nvae;
                 }
@@ -2949,16 +3016,16 @@
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("762:1: lhs_and returns [BaseDescr d] : ( LEFT_PAREN AND (lhsunary= lhs_unary )+ RIGHT_PAREN | left= lhs_unary ( ( AND | DOUBLE_AMPER ) right= lhs_unary )* );", 36, 0, input);
+                    new NoViableAltException("778:1: lhs_and returns [BaseDescr d] : ( LEFT_PAREN AND (lhsunary= lhs_unary )+ RIGHT_PAREN | left= lhs_unary ( ( AND | DOUBLE_AMPER ) right= lhs_unary )* );", 36, 0, input);
 
                 throw nvae;
             }
             switch (alt36) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:767:4: LEFT_PAREN AND (lhsunary= lhs_unary )+ RIGHT_PAREN
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:783:4: LEFT_PAREN AND (lhsunary= lhs_unary )+ RIGHT_PAREN
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_and1810); if (failed) return d;
-                    match(input,AND,FOLLOW_AND_in_lhs_and1812); if (failed) return d;
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_and1867); if (failed) return d;
+                    match(input,AND,FOLLOW_AND_in_lhs_and1869); if (failed) return d;
                     if ( backtracking==0 ) {
 
                       			and = new AndDescr();
@@ -2966,7 +3033,7 @@
                       			location.setType( Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR );
                       		
                     }
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:773:3: (lhsunary= lhs_unary )+
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:789:3: (lhsunary= lhs_unary )+
                     int cnt34=0;
                     loop34:
                     do {
@@ -2980,9 +3047,9 @@
 
                         switch (alt34) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:773:4: lhsunary= lhs_unary
+                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:789:4: lhsunary= lhs_unary
                     	    {
-                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and1824);
+                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and1881);
                     	    lhsunary=lhs_unary();
                     	    _fsp--;
                     	    if (failed) return d;
@@ -3005,21 +3072,21 @@
                         cnt34++;
                     } while (true);
 
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_and1834); if (failed) return d;
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_and1891); if (failed) return d;
 
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:779:10: left= lhs_unary ( ( AND | DOUBLE_AMPER ) right= lhs_unary )*
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:795:10: left= lhs_unary ( ( AND | DOUBLE_AMPER ) right= lhs_unary )*
                     {
-                    pushFollow(FOLLOW_lhs_unary_in_lhs_and1852);
+                    pushFollow(FOLLOW_lhs_unary_in_lhs_and1909);
                     left=lhs_unary();
                     _fsp--;
                     if (failed) return d;
                     if ( backtracking==0 ) {
                        d = left; 
                     }
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:780:3: ( ( AND | DOUBLE_AMPER ) right= lhs_unary )*
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:796:3: ( ( AND | DOUBLE_AMPER ) right= lhs_unary )*
                     loop35:
                     do {
                         int alt35=2;
@@ -3032,7 +3099,7 @@
 
                         switch (alt35) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:780:5: ( AND | DOUBLE_AMPER ) right= lhs_unary
+                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:796:5: ( AND | DOUBLE_AMPER ) right= lhs_unary
                     	    {
                     	    if ( (input.LA(1)>=AND && input.LA(1)<=DOUBLE_AMPER) ) {
                     	        input.consume();
@@ -3042,7 +3109,7 @@
                     	        if (backtracking>0) {failed=true; return d;}
                     	        MismatchedSetException mse =
                     	            new MismatchedSetException(null,input);
-                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_and1860);    throw mse;
+                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_and1917);    throw mse;
                     	    }
 
                     	    if ( backtracking==0 ) {
@@ -3050,7 +3117,7 @@
                     	      				location.setType( Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR );
                     	      			
                     	    }
-                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and1876);
+                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and1933);
                     	    right=lhs_unary();
                     	    _fsp--;
                     	    if (failed) return d;
@@ -3092,7 +3159,7 @@
 
 
     // $ANTLR start lhs_unary
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:797:1: lhs_unary returns [BaseDescr d] : ( ( EXISTS )=>u= lhs_exist | ( NOT )=>u= lhs_not | ( EVAL )=>u= lhs_eval | ( FORALL )=>u= lhs_forall | ( LEFT_PAREN )=> LEFT_PAREN u= lhs_or RIGHT_PAREN | ps= pattern_source ) opt_semicolon ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:813:1: lhs_unary returns [BaseDescr d] : ( ( EXISTS )=>u= lhs_exist | ( NOT )=>u= lhs_not | ( EVAL )=>u= lhs_eval | ( FORALL )=>u= lhs_forall | ( LEFT_PAREN )=> LEFT_PAREN u= lhs_or RIGHT_PAREN | ps= pattern_source ) opt_semicolon ;
     public final BaseDescr lhs_unary() throws RecognitionException {
         BaseDescr d = null;
 
@@ -3105,10 +3172,10 @@
         		d = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:801:2: ( ( ( EXISTS )=>u= lhs_exist | ( NOT )=>u= lhs_not | ( EVAL )=>u= lhs_eval | ( FORALL )=>u= lhs_forall | ( LEFT_PAREN )=> LEFT_PAREN u= lhs_or RIGHT_PAREN | ps= pattern_source ) opt_semicolon )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:801:4: ( ( EXISTS )=>u= lhs_exist | ( NOT )=>u= lhs_not | ( EVAL )=>u= lhs_eval | ( FORALL )=>u= lhs_forall | ( LEFT_PAREN )=> LEFT_PAREN u= lhs_or RIGHT_PAREN | ps= pattern_source ) opt_semicolon
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:817:2: ( ( ( EXISTS )=>u= lhs_exist | ( NOT )=>u= lhs_not | ( EVAL )=>u= lhs_eval | ( FORALL )=>u= lhs_forall | ( LEFT_PAREN )=> LEFT_PAREN u= lhs_or RIGHT_PAREN | ps= pattern_source ) opt_semicolon )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:817:4: ( ( EXISTS )=>u= lhs_exist | ( NOT )=>u= lhs_not | ( EVAL )=>u= lhs_eval | ( FORALL )=>u= lhs_forall | ( LEFT_PAREN )=> LEFT_PAREN u= lhs_or RIGHT_PAREN | ps= pattern_source ) opt_semicolon
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:801:4: ( ( EXISTS )=>u= lhs_exist | ( NOT )=>u= lhs_not | ( EVAL )=>u= lhs_eval | ( FORALL )=>u= lhs_forall | ( LEFT_PAREN )=> LEFT_PAREN u= lhs_or RIGHT_PAREN | ps= pattern_source )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:817:4: ( ( EXISTS )=>u= lhs_exist | ( NOT )=>u= lhs_not | ( EVAL )=>u= lhs_eval | ( FORALL )=>u= lhs_forall | ( LEFT_PAREN )=> LEFT_PAREN u= lhs_or RIGHT_PAREN | ps= pattern_source )
             int alt37=6;
             int LA37_0 = input.LA(1);
 
@@ -3133,15 +3200,15 @@
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("801:4: ( ( EXISTS )=>u= lhs_exist | ( NOT )=>u= lhs_not | ( EVAL )=>u= lhs_eval | ( FORALL )=>u= lhs_forall | ( LEFT_PAREN )=> LEFT_PAREN u= lhs_or RIGHT_PAREN | ps= pattern_source )", 37, 0, input);
+                    new NoViableAltException("817:4: ( ( EXISTS )=>u= lhs_exist | ( NOT )=>u= lhs_not | ( EVAL )=>u= lhs_eval | ( FORALL )=>u= lhs_forall | ( LEFT_PAREN )=> LEFT_PAREN u= lhs_or RIGHT_PAREN | ps= pattern_source )", 37, 0, input);
 
                 throw nvae;
             }
             switch (alt37) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:801:6: ( EXISTS )=>u= lhs_exist
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:817:6: ( EXISTS )=>u= lhs_exist
                     {
-                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary1921);
+                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary1978);
                     u=lhs_exist();
                     _fsp--;
                     if (failed) return d;
@@ -3152,9 +3219,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:802:5: ( NOT )=>u= lhs_not
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:818:5: ( NOT )=>u= lhs_not
                     {
-                    pushFollow(FOLLOW_lhs_not_in_lhs_unary1939);
+                    pushFollow(FOLLOW_lhs_not_in_lhs_unary1996);
                     u=lhs_not();
                     _fsp--;
                     if (failed) return d;
@@ -3165,9 +3232,9 @@
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:803:5: ( EVAL )=>u= lhs_eval
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:819:5: ( EVAL )=>u= lhs_eval
                     {
-                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary1958);
+                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary2015);
                     u=lhs_eval();
                     _fsp--;
                     if (failed) return d;
@@ -3178,9 +3245,9 @@
                     }
                     break;
                 case 4 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:804:5: ( FORALL )=>u= lhs_forall
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:820:5: ( FORALL )=>u= lhs_forall
                     {
-                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary1977);
+                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary2034);
                     u=lhs_forall();
                     _fsp--;
                     if (failed) return d;
@@ -3191,14 +3258,14 @@
                     }
                     break;
                 case 5 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:805:5: ( LEFT_PAREN )=> LEFT_PAREN u= lhs_or RIGHT_PAREN
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:821:5: ( LEFT_PAREN )=> LEFT_PAREN u= lhs_or RIGHT_PAREN
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary1994); if (failed) return d;
-                    pushFollow(FOLLOW_lhs_or_in_lhs_unary1998);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary2051); if (failed) return d;
+                    pushFollow(FOLLOW_lhs_or_in_lhs_unary2055);
                     u=lhs_or();
                     _fsp--;
                     if (failed) return d;
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary2000); if (failed) return d;
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary2057); if (failed) return d;
                     if ( backtracking==0 ) {
                        d = u; 
                     }
@@ -3206,9 +3273,9 @@
                     }
                     break;
                 case 6 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:806:5: ps= pattern_source
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:822:5: ps= pattern_source
                     {
-                    pushFollow(FOLLOW_pattern_source_in_lhs_unary2011);
+                    pushFollow(FOLLOW_pattern_source_in_lhs_unary2068);
                     ps=pattern_source();
                     _fsp--;
                     if (failed) return d;
@@ -3221,7 +3288,7 @@
 
             }
 
-            pushFollow(FOLLOW_opt_semicolon_in_lhs_unary2023);
+            pushFollow(FOLLOW_opt_semicolon_in_lhs_unary2080);
             opt_semicolon();
             _fsp--;
             if (failed) return d;
@@ -3241,7 +3308,7 @@
 
 
     // $ANTLR start pattern_source
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:811:1: pattern_source returns [BaseDescr d] : u= lhs_pattern ( FROM ( options {k=1; } : (ac= accumulate_statement ) | (cs= collect_statement ) | (fm= from_statement ) ) )? ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:827:1: pattern_source returns [BaseDescr d] : u= lhs_pattern ( FROM ( options {k=1; } : (ac= accumulate_statement ) | (cs= collect_statement ) | (fm= from_statement ) ) )? ;
     public final BaseDescr pattern_source() throws RecognitionException {
         BaseDescr d = null;
 
@@ -3258,17 +3325,17 @@
         		d = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:815:2: (u= lhs_pattern ( FROM ( options {k=1; } : (ac= accumulate_statement ) | (cs= collect_statement ) | (fm= from_statement ) ) )? )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:816:3: u= lhs_pattern ( FROM ( options {k=1; } : (ac= accumulate_statement ) | (cs= collect_statement ) | (fm= from_statement ) ) )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:831:2: (u= lhs_pattern ( FROM ( options {k=1; } : (ac= accumulate_statement ) | (cs= collect_statement ) | (fm= from_statement ) ) )? )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:832:3: u= lhs_pattern ( FROM ( options {k=1; } : (ac= accumulate_statement ) | (cs= collect_statement ) | (fm= from_statement ) ) )?
             {
-            pushFollow(FOLLOW_lhs_pattern_in_pattern_source2050);
+            pushFollow(FOLLOW_lhs_pattern_in_pattern_source2107);
             u=lhs_pattern();
             _fsp--;
             if (failed) return d;
             if ( backtracking==0 ) {
                d = u; 
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:817:3: ( FROM ( options {k=1; } : (ac= accumulate_statement ) | (cs= collect_statement ) | (fm= from_statement ) ) )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:833:3: ( FROM ( options {k=1; } : (ac= accumulate_statement ) | (cs= collect_statement ) | (fm= from_statement ) ) )?
             int alt39=2;
             int LA39_0 = input.LA(1);
 
@@ -3277,16 +3344,16 @@
             }
             switch (alt39) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:818:4: FROM ( options {k=1; } : (ac= accumulate_statement ) | (cs= collect_statement ) | (fm= from_statement ) )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:834:4: FROM ( options {k=1; } : (ac= accumulate_statement ) | (cs= collect_statement ) | (fm= from_statement ) )
                     {
-                    match(input,FROM,FOLLOW_FROM_in_pattern_source2062); if (failed) return d;
+                    match(input,FROM,FOLLOW_FROM_in_pattern_source2119); if (failed) return d;
                     if ( backtracking==0 ) {
 
                       				location.setType(Location.LOCATION_LHS_FROM);
                       				location.setProperty(Location.LOCATION_FROM_CONTENT, "");
                       		        
                     }
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:823:11: ( options {k=1; } : (ac= accumulate_statement ) | (cs= collect_statement ) | (fm= from_statement ) )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:839:11: ( options {k=1; } : (ac= accumulate_statement ) | (cs= collect_statement ) | (fm= from_statement ) )
                     int alt38=3;
                     switch ( input.LA(1) ) {
                     case ACCUMULATE:
@@ -3302,6 +3369,7 @@
                     case PACKAGE:
                     case IMPORT:
                     case FUNCTION:
+                    case EVENT:
                     case ID:
                     case GLOBAL:
                     case QUERY:
@@ -3333,19 +3401,19 @@
                     default:
                         if (backtracking>0) {failed=true; return d;}
                         NoViableAltException nvae =
-                            new NoViableAltException("823:11: ( options {k=1; } : (ac= accumulate_statement ) | (cs= collect_statement ) | (fm= from_statement ) )", 38, 0, input);
+                            new NoViableAltException("839:11: ( options {k=1; } : (ac= accumulate_statement ) | (cs= collect_statement ) | (fm= from_statement ) )", 38, 0, input);
 
                         throw nvae;
                     }
 
                     switch (alt38) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:824:15: (ac= accumulate_statement )
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:840:15: (ac= accumulate_statement )
                             {
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:824:15: (ac= accumulate_statement )
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:824:17: ac= accumulate_statement
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:840:15: (ac= accumulate_statement )
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:840:17: ac= accumulate_statement
                             {
-                            pushFollow(FOLLOW_accumulate_statement_in_pattern_source2118);
+                            pushFollow(FOLLOW_accumulate_statement_in_pattern_source2175);
                             ac=accumulate_statement();
                             _fsp--;
                             if (failed) return d;
@@ -3359,12 +3427,12 @@
                             }
                             break;
                         case 2 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:825:15: (cs= collect_statement )
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:15: (cs= collect_statement )
                             {
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:825:15: (cs= collect_statement )
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:825:17: cs= collect_statement
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:15: (cs= collect_statement )
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:17: cs= collect_statement
                             {
-                            pushFollow(FOLLOW_collect_statement_in_pattern_source2141);
+                            pushFollow(FOLLOW_collect_statement_in_pattern_source2198);
                             cs=collect_statement();
                             _fsp--;
                             if (failed) return d;
@@ -3378,12 +3446,12 @@
                             }
                             break;
                         case 3 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:826:15: (fm= from_statement )
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:842:15: (fm= from_statement )
                             {
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:826:15: (fm= from_statement )
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:826:17: fm= from_statement
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:842:15: (fm= from_statement )
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:842:17: fm= from_statement
                             {
-                            pushFollow(FOLLOW_from_statement_in_pattern_source2165);
+                            pushFollow(FOLLOW_from_statement_in_pattern_source2222);
                             fm=from_statement();
                             _fsp--;
                             if (failed) return d;
@@ -3421,12 +3489,12 @@
 
 
     // $ANTLR start lhs_exist
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:831:1: lhs_exist returns [BaseDescr d] : EXISTS ( ( LEFT_PAREN or= lhs_or RIGHT_PAREN ) | pattern= lhs_pattern ) ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:847:1: lhs_exist returns [BaseDescr d] : EXISTS ( ( LEFT_PAREN or= lhs_or RIGHT_PAREN ) | pattern= lhs_pattern ) ;
     public final BaseDescr lhs_exist() throws RecognitionException {
         BaseDescr d = null;
 
-        Token EXISTS37=null;
-        Token RIGHT_PAREN38=null;
+        Token EXISTS38=null;
+        Token RIGHT_PAREN39=null;
         BaseDescr or = null;
 
         BaseDescr pattern = null;
@@ -3436,20 +3504,20 @@
         		d = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:835:2: ( EXISTS ( ( LEFT_PAREN or= lhs_or RIGHT_PAREN ) | pattern= lhs_pattern ) )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:835:4: EXISTS ( ( LEFT_PAREN or= lhs_or RIGHT_PAREN ) | pattern= lhs_pattern )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:851:2: ( EXISTS ( ( LEFT_PAREN or= lhs_or RIGHT_PAREN ) | pattern= lhs_pattern ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:851:4: EXISTS ( ( LEFT_PAREN or= lhs_or RIGHT_PAREN ) | pattern= lhs_pattern )
             {
-            EXISTS37=(Token)input.LT(1);
-            match(input,EXISTS,FOLLOW_EXISTS_in_lhs_exist2208); if (failed) return d;
+            EXISTS38=(Token)input.LT(1);
+            match(input,EXISTS,FOLLOW_EXISTS_in_lhs_exist2265); if (failed) return d;
             if ( backtracking==0 ) {
 
               			d = new ExistsDescr( ); 
-              			d.setLocation( offset(EXISTS37.getLine()), EXISTS37.getCharPositionInLine() );
-              			d.setStartCharacter( ((CommonToken)EXISTS37).getStartIndex() );
+              			d.setLocation( offset(EXISTS38.getLine()), EXISTS38.getCharPositionInLine() );
+              			d.setStartCharacter( ((CommonToken)EXISTS38).getStartIndex() );
               			location.setType( Location.LOCATION_LHS_BEGIN_OF_CONDITION_EXISTS );
               		
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:842:10: ( ( LEFT_PAREN or= lhs_or RIGHT_PAREN ) | pattern= lhs_pattern )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:858:10: ( ( LEFT_PAREN or= lhs_or RIGHT_PAREN ) | pattern= lhs_pattern )
             int alt40=2;
             int LA40_0 = input.LA(1);
 
@@ -3462,29 +3530,29 @@
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("842:10: ( ( LEFT_PAREN or= lhs_or RIGHT_PAREN ) | pattern= lhs_pattern )", 40, 0, input);
+                    new NoViableAltException("858:10: ( ( LEFT_PAREN or= lhs_or RIGHT_PAREN ) | pattern= lhs_pattern )", 40, 0, input);
 
                 throw nvae;
             }
             switch (alt40) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:842:12: ( LEFT_PAREN or= lhs_or RIGHT_PAREN )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:858:12: ( LEFT_PAREN or= lhs_or RIGHT_PAREN )
                     {
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:842:12: ( LEFT_PAREN or= lhs_or RIGHT_PAREN )
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:842:14: LEFT_PAREN or= lhs_or RIGHT_PAREN
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:858:12: ( LEFT_PAREN or= lhs_or RIGHT_PAREN )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:858:14: LEFT_PAREN or= lhs_or RIGHT_PAREN
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist2228); if (failed) return d;
-                    pushFollow(FOLLOW_lhs_or_in_lhs_exist2232);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist2285); if (failed) return d;
+                    pushFollow(FOLLOW_lhs_or_in_lhs_exist2289);
                     or=lhs_or();
                     _fsp--;
                     if (failed) return d;
                     if ( backtracking==0 ) {
                        if ( or != null ) ((ExistsDescr)d).addDescr( or ); 
                     }
-                    RIGHT_PAREN38=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist2262); if (failed) return d;
+                    RIGHT_PAREN39=(Token)input.LT(1);
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist2319); if (failed) return d;
                     if ( backtracking==0 ) {
-                       d.setEndCharacter( ((CommonToken)RIGHT_PAREN38).getStopIndex() ); 
+                       d.setEndCharacter( ((CommonToken)RIGHT_PAREN39).getStopIndex() ); 
                     }
 
                     }
@@ -3493,9 +3561,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:847:12: pattern= lhs_pattern
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:863:12: pattern= lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_exist2312);
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_exist2369);
                     pattern=lhs_pattern();
                     _fsp--;
                     if (failed) return d;
@@ -3529,12 +3597,12 @@
 
 
     // $ANTLR start lhs_not
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:857:1: lhs_not returns [NotDescr d] : NOT ( ( LEFT_PAREN or= lhs_or RIGHT_PAREN ) | pattern= lhs_pattern ) ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:873:1: lhs_not returns [NotDescr d] : NOT ( ( LEFT_PAREN or= lhs_or RIGHT_PAREN ) | pattern= lhs_pattern ) ;
     public final NotDescr lhs_not() throws RecognitionException {
         NotDescr d = null;
 
-        Token NOT39=null;
-        Token RIGHT_PAREN40=null;
+        Token NOT40=null;
+        Token RIGHT_PAREN41=null;
         BaseDescr or = null;
 
         BaseDescr pattern = null;
@@ -3544,20 +3612,20 @@
         		d = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:861:2: ( NOT ( ( LEFT_PAREN or= lhs_or RIGHT_PAREN ) | pattern= lhs_pattern ) )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:861:4: NOT ( ( LEFT_PAREN or= lhs_or RIGHT_PAREN ) | pattern= lhs_pattern )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:877:2: ( NOT ( ( LEFT_PAREN or= lhs_or RIGHT_PAREN ) | pattern= lhs_pattern ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:877:4: NOT ( ( LEFT_PAREN or= lhs_or RIGHT_PAREN ) | pattern= lhs_pattern )
             {
-            NOT39=(Token)input.LT(1);
-            match(input,NOT,FOLLOW_NOT_in_lhs_not2364); if (failed) return d;
+            NOT40=(Token)input.LT(1);
+            match(input,NOT,FOLLOW_NOT_in_lhs_not2421); if (failed) return d;
             if ( backtracking==0 ) {
 
               			d = new NotDescr( ); 
-              			d.setLocation( offset(NOT39.getLine()), NOT39.getCharPositionInLine() );
-              			d.setStartCharacter( ((CommonToken)NOT39).getStartIndex() );
+              			d.setLocation( offset(NOT40.getLine()), NOT40.getCharPositionInLine() );
+              			d.setStartCharacter( ((CommonToken)NOT40).getStartIndex() );
               			location.setType( Location.LOCATION_LHS_BEGIN_OF_CONDITION_NOT );
               		
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:868:3: ( ( LEFT_PAREN or= lhs_or RIGHT_PAREN ) | pattern= lhs_pattern )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:884:3: ( ( LEFT_PAREN or= lhs_or RIGHT_PAREN ) | pattern= lhs_pattern )
             int alt41=2;
             int LA41_0 = input.LA(1);
 
@@ -3570,29 +3638,29 @@
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("868:3: ( ( LEFT_PAREN or= lhs_or RIGHT_PAREN ) | pattern= lhs_pattern )", 41, 0, input);
+                    new NoViableAltException("884:3: ( ( LEFT_PAREN or= lhs_or RIGHT_PAREN ) | pattern= lhs_pattern )", 41, 0, input);
 
                 throw nvae;
             }
             switch (alt41) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:868:5: ( LEFT_PAREN or= lhs_or RIGHT_PAREN )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:884:5: ( LEFT_PAREN or= lhs_or RIGHT_PAREN )
                     {
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:868:5: ( LEFT_PAREN or= lhs_or RIGHT_PAREN )
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:868:7: LEFT_PAREN or= lhs_or RIGHT_PAREN
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:884:5: ( LEFT_PAREN or= lhs_or RIGHT_PAREN )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:884:7: LEFT_PAREN or= lhs_or RIGHT_PAREN
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not2377); if (failed) return d;
-                    pushFollow(FOLLOW_lhs_or_in_lhs_not2381);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not2434); if (failed) return d;
+                    pushFollow(FOLLOW_lhs_or_in_lhs_not2438);
                     or=lhs_or();
                     _fsp--;
                     if (failed) return d;
                     if ( backtracking==0 ) {
                        if ( or != null ) d.addDescr( or ); 
                     }
-                    RIGHT_PAREN40=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not2412); if (failed) return d;
+                    RIGHT_PAREN41=(Token)input.LT(1);
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not2469); if (failed) return d;
                     if ( backtracking==0 ) {
-                       d.setEndCharacter( ((CommonToken)RIGHT_PAREN40).getStopIndex() ); 
+                       d.setEndCharacter( ((CommonToken)RIGHT_PAREN41).getStopIndex() ); 
                     }
 
                     }
@@ -3601,9 +3669,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:3: pattern= lhs_pattern
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:890:3: pattern= lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_not2449);
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_not2506);
                     pattern=lhs_pattern();
                     _fsp--;
                     if (failed) return d;
@@ -3637,11 +3705,11 @@
 
 
     // $ANTLR start lhs_eval
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:884:1: lhs_eval returns [BaseDescr d] : EVAL c= paren_chunk ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:900:1: lhs_eval returns [BaseDescr d] : EVAL c= paren_chunk ;
     public final BaseDescr lhs_eval() throws RecognitionException {
         BaseDescr d = null;
 
-        Token EVAL41=null;
+        Token EVAL42=null;
         paren_chunk_return c = null;
 
 
@@ -3649,27 +3717,27 @@
         		d = new EvalDescr( );
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:888:2: ( EVAL c= paren_chunk )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:889:3: EVAL c= paren_chunk
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:904:2: ( EVAL c= paren_chunk )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:905:3: EVAL c= paren_chunk
             {
-            EVAL41=(Token)input.LT(1);
-            match(input,EVAL,FOLLOW_EVAL_in_lhs_eval2495); if (failed) return d;
+            EVAL42=(Token)input.LT(1);
+            match(input,EVAL,FOLLOW_EVAL_in_lhs_eval2552); if (failed) return d;
             if ( backtracking==0 ) {
 
               			location.setType( Location.LOCATION_LHS_INSIDE_EVAL );
               		
             }
-            pushFollow(FOLLOW_paren_chunk_in_lhs_eval2506);
+            pushFollow(FOLLOW_paren_chunk_in_lhs_eval2563);
             c=paren_chunk();
             _fsp--;
             if (failed) return d;
             if ( backtracking==0 ) {
                
-              			d.setStartCharacter( ((CommonToken)EVAL41).getStartIndex() );
+              			d.setStartCharacter( ((CommonToken)EVAL42).getStartIndex() );
               		        if( input.toString(c.start,c.stop) != null ) {
               	  		    this.location.setType( Location.LOCATION_LHS_BEGIN_OF_CONDITION );
               		            String body = safeSubstring( input.toString(c.start,c.stop), 1, input.toString(c.start,c.stop).length()-1 );
-              			    checkTrailingSemicolon( body, offset(EVAL41.getLine()) );
+              			    checkTrailingSemicolon( body, offset(EVAL42.getLine()) );
               			    ((EvalDescr) d).setContent( body );
               			    location.setProperty(Location.LOCATION_EVAL_CONTENT, body);
               			}
@@ -3694,12 +3762,12 @@
 
 
     // $ANTLR start lhs_forall
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:909:1: lhs_forall returns [ForallDescr d] : FORALL LEFT_PAREN base= lhs_pattern (pattern= lhs_pattern )* RIGHT_PAREN ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:925:1: lhs_forall returns [ForallDescr d] : FORALL LEFT_PAREN base= lhs_pattern (pattern= lhs_pattern )* RIGHT_PAREN ;
     public final ForallDescr lhs_forall() throws RecognitionException {
         ForallDescr d = null;
 
-        Token FORALL42=null;
-        Token RIGHT_PAREN43=null;
+        Token FORALL43=null;
+        Token RIGHT_PAREN44=null;
         BaseDescr base = null;
 
         BaseDescr pattern = null;
@@ -3709,25 +3777,25 @@
         		d = factory.createForall();
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:2: ( FORALL LEFT_PAREN base= lhs_pattern (pattern= lhs_pattern )* RIGHT_PAREN )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:4: FORALL LEFT_PAREN base= lhs_pattern (pattern= lhs_pattern )* RIGHT_PAREN
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:929:2: ( FORALL LEFT_PAREN base= lhs_pattern (pattern= lhs_pattern )* RIGHT_PAREN )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:929:4: FORALL LEFT_PAREN base= lhs_pattern (pattern= lhs_pattern )* RIGHT_PAREN
             {
-            FORALL42=(Token)input.LT(1);
-            match(input,FORALL,FOLLOW_FORALL_in_lhs_forall2532); if (failed) return d;
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forall2534); if (failed) return d;
-            pushFollow(FOLLOW_lhs_pattern_in_lhs_forall2538);
+            FORALL43=(Token)input.LT(1);
+            match(input,FORALL,FOLLOW_FORALL_in_lhs_forall2589); if (failed) return d;
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forall2591); if (failed) return d;
+            pushFollow(FOLLOW_lhs_pattern_in_lhs_forall2595);
             base=lhs_pattern();
             _fsp--;
             if (failed) return d;
             if ( backtracking==0 ) {
 
-              			d.setStartCharacter( ((CommonToken)FORALL42).getStartIndex() );
+              			d.setStartCharacter( ((CommonToken)FORALL43).getStartIndex() );
               		        // adding the base pattern
               		        d.addDescr( base );
-              			d.setLocation( offset(FORALL42.getLine()), FORALL42.getCharPositionInLine() );
+              			d.setLocation( offset(FORALL43.getLine()), FORALL43.getCharPositionInLine() );
               		
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:920:3: (pattern= lhs_pattern )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:936:3: (pattern= lhs_pattern )*
             loop42:
             do {
                 int alt42=2;
@@ -3740,9 +3808,9 @@
 
                 switch (alt42) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:920:5: pattern= lhs_pattern
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:936:5: pattern= lhs_pattern
             	    {
-            	    pushFollow(FOLLOW_lhs_pattern_in_lhs_forall2553);
+            	    pushFollow(FOLLOW_lhs_pattern_in_lhs_forall2610);
             	    pattern=lhs_pattern();
             	    _fsp--;
             	    if (failed) return d;
@@ -3761,11 +3829,11 @@
                 }
             } while (true);
 
-            RIGHT_PAREN43=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall2569); if (failed) return d;
+            RIGHT_PAREN44=(Token)input.LT(1);
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall2626); if (failed) return d;
             if ( backtracking==0 ) {
 
-              		        d.setEndCharacter( ((CommonToken)RIGHT_PAREN43).getStopIndex() );
+              		        d.setEndCharacter( ((CommonToken)RIGHT_PAREN44).getStopIndex() );
               		
             }
 
@@ -3784,7 +3852,7 @@
 
 
     // $ANTLR start lhs_pattern
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:1: lhs_pattern returns [BaseDescr d] : (f= fact_binding | f= fact[null] );
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:948:1: lhs_pattern returns [BaseDescr d] : (f= fact_binding | f= fact[null] );
     public final BaseDescr lhs_pattern() throws RecognitionException {
         BaseDescr d = null;
 
@@ -3795,14 +3863,14 @@
         		d =null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:939:2: (f= fact_binding | f= fact[null] )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:955:2: (f= fact_binding | f= fact[null] )
             int alt43=2;
             int LA43_0 = input.LA(1);
 
             if ( (LA43_0==ID) ) {
                 int LA43_1 = input.LA(2);
 
-                if ( (LA43_1==74) ) {
+                if ( (LA43_1==75) ) {
                     alt43=1;
                 }
                 else if ( (LA43_1==DOT||LA43_1==LEFT_PAREN||LA43_1==LEFT_SQUARE) ) {
@@ -3811,7 +3879,7 @@
                 else {
                     if (backtracking>0) {failed=true; return d;}
                     NoViableAltException nvae =
-                        new NoViableAltException("932:1: lhs_pattern returns [BaseDescr d] : (f= fact_binding | f= fact[null] );", 43, 1, input);
+                        new NoViableAltException("948:1: lhs_pattern returns [BaseDescr d] : (f= fact_binding | f= fact[null] );", 43, 1, input);
 
                     throw nvae;
                 }
@@ -3819,15 +3887,15 @@
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("932:1: lhs_pattern returns [BaseDescr d] : (f= fact_binding | f= fact[null] );", 43, 0, input);
+                    new NoViableAltException("948:1: lhs_pattern returns [BaseDescr d] : (f= fact_binding | f= fact[null] );", 43, 0, input);
 
                 throw nvae;
             }
             switch (alt43) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:939:4: f= fact_binding
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:955:4: f= fact_binding
                     {
-                    pushFollow(FOLLOW_fact_binding_in_lhs_pattern2602);
+                    pushFollow(FOLLOW_fact_binding_in_lhs_pattern2659);
                     f=fact_binding();
                     _fsp--;
                     if (failed) return d;
@@ -3835,9 +3903,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:940:4: f= fact[null]
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:956:4: f= fact[null]
                     {
-                    pushFollow(FOLLOW_fact_in_lhs_pattern2610);
+                    pushFollow(FOLLOW_fact_in_lhs_pattern2667);
                     f=fact(null);
                     _fsp--;
                     if (failed) return d;
@@ -3864,7 +3932,7 @@
 
 
     // $ANTLR start from_statement
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:943:1: from_statement returns [FromDescr d] : ds= from_source[$d] ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:959:1: from_statement returns [FromDescr d] : ds= from_source[$d] ;
     public final FromDescr from_statement() throws RecognitionException {
         FromDescr d = null;
 
@@ -3875,10 +3943,10 @@
         		d =factory.createFrom();
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:947:2: (ds= from_source[$d] )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:948:2: ds= from_source[$d]
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:963:2: (ds= from_source[$d] )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:964:2: ds= from_source[$d]
             {
-            pushFollow(FOLLOW_from_source_in_from_statement2637);
+            pushFollow(FOLLOW_from_source_in_from_statement2694);
             ds=from_source(d);
             _fsp--;
             if (failed) return d;
@@ -3903,13 +3971,13 @@
 
 
     // $ANTLR start accumulate_statement
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:955:1: accumulate_statement returns [AccumulateDescr d] : ACCUMULATE LEFT_PAREN inputCE= lhs_or ( COMMA )? ( ( INIT text= paren_chunk ( COMMA )? ACTION text= paren_chunk ( COMMA )? ( REVERSE text= paren_chunk ( COMMA )? )? RESULT text= paren_chunk ) | (id= ID text= paren_chunk ) ) RIGHT_PAREN ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:971:1: accumulate_statement returns [AccumulateDescr d] : ACCUMULATE LEFT_PAREN inputCE= lhs_or ( COMMA )? ( ( INIT text= paren_chunk ( COMMA )? ACTION text= paren_chunk ( COMMA )? ( REVERSE text= paren_chunk ( COMMA )? )? RESULT text= paren_chunk ) | (id= ID text= paren_chunk ) ) RIGHT_PAREN ;
     public final AccumulateDescr accumulate_statement() throws RecognitionException {
         AccumulateDescr d = null;
 
         Token id=null;
-        Token ACCUMULATE44=null;
-        Token RIGHT_PAREN45=null;
+        Token ACCUMULATE45=null;
+        Token RIGHT_PAREN46=null;
         BaseDescr inputCE = null;
 
         paren_chunk_return text = null;
@@ -3919,24 +3987,24 @@
         		d = factory.createAccumulate();
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:959:2: ( ACCUMULATE LEFT_PAREN inputCE= lhs_or ( COMMA )? ( ( INIT text= paren_chunk ( COMMA )? ACTION text= paren_chunk ( COMMA )? ( REVERSE text= paren_chunk ( COMMA )? )? RESULT text= paren_chunk ) | (id= ID text= paren_chunk ) ) RIGHT_PAREN )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:960:10: ACCUMULATE LEFT_PAREN inputCE= lhs_or ( COMMA )? ( ( INIT text= paren_chunk ( COMMA )? ACTION text= paren_chunk ( COMMA )? ( REVERSE text= paren_chunk ( COMMA )? )? RESULT text= paren_chunk ) | (id= ID text= paren_chunk ) ) RIGHT_PAREN
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:975:2: ( ACCUMULATE LEFT_PAREN inputCE= lhs_or ( COMMA )? ( ( INIT text= paren_chunk ( COMMA )? ACTION text= paren_chunk ( COMMA )? ( REVERSE text= paren_chunk ( COMMA )? )? RESULT text= paren_chunk ) | (id= ID text= paren_chunk ) ) RIGHT_PAREN )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:976:10: ACCUMULATE LEFT_PAREN inputCE= lhs_or ( COMMA )? ( ( INIT text= paren_chunk ( COMMA )? ACTION text= paren_chunk ( COMMA )? ( REVERSE text= paren_chunk ( COMMA )? )? RESULT text= paren_chunk ) | (id= ID text= paren_chunk ) ) RIGHT_PAREN
             {
-            ACCUMULATE44=(Token)input.LT(1);
-            match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_accumulate_statement2674); if (failed) return d;
+            ACCUMULATE45=(Token)input.LT(1);
+            match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_accumulate_statement2731); if (failed) return d;
             if ( backtracking==0 ) {
                
-              			d.setLocation( offset(ACCUMULATE44.getLine()), ACCUMULATE44.getCharPositionInLine() );
-              			d.setStartCharacter( ((CommonToken)ACCUMULATE44).getStartIndex() );
+              			d.setLocation( offset(ACCUMULATE45.getLine()), ACCUMULATE45.getCharPositionInLine() );
+              			d.setStartCharacter( ((CommonToken)ACCUMULATE45).getStartIndex() );
               			location.setType( Location.LOCATION_LHS_FROM_ACCUMULATE );
               		
             }
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_statement2684); if (failed) return d;
-            pushFollow(FOLLOW_lhs_or_in_accumulate_statement2688);
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_statement2741); if (failed) return d;
+            pushFollow(FOLLOW_lhs_or_in_accumulate_statement2745);
             inputCE=lhs_or();
             _fsp--;
             if (failed) return d;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:966:29: ( COMMA )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:982:29: ( COMMA )?
             int alt44=2;
             int LA44_0 = input.LA(1);
 
@@ -3945,9 +4013,9 @@
             }
             switch (alt44) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:966:29: COMMA
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:982:29: COMMA
                     {
-                    match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement2690); if (failed) return d;
+                    match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement2747); if (failed) return d;
 
                     }
                     break;
@@ -3959,7 +4027,7 @@
               		        d.setInput( inputCE );
               		
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:970:3: ( ( INIT text= paren_chunk ( COMMA )? ACTION text= paren_chunk ( COMMA )? ( REVERSE text= paren_chunk ( COMMA )? )? RESULT text= paren_chunk ) | (id= ID text= paren_chunk ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:986:3: ( ( INIT text= paren_chunk ( COMMA )? ACTION text= paren_chunk ( COMMA )? ( REVERSE text= paren_chunk ( COMMA )? )? RESULT text= paren_chunk ) | (id= ID text= paren_chunk ) )
             int alt49=2;
             int LA49_0 = input.LA(1);
 
@@ -3972,28 +4040,28 @@
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("970:3: ( ( INIT text= paren_chunk ( COMMA )? ACTION text= paren_chunk ( COMMA )? ( REVERSE text= paren_chunk ( COMMA )? )? RESULT text= paren_chunk ) | (id= ID text= paren_chunk ) )", 49, 0, input);
+                    new NoViableAltException("986:3: ( ( INIT text= paren_chunk ( COMMA )? ACTION text= paren_chunk ( COMMA )? ( REVERSE text= paren_chunk ( COMMA )? )? RESULT text= paren_chunk ) | (id= ID text= paren_chunk ) )", 49, 0, input);
 
                 throw nvae;
             }
             switch (alt49) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:970:5: ( INIT text= paren_chunk ( COMMA )? ACTION text= paren_chunk ( COMMA )? ( REVERSE text= paren_chunk ( COMMA )? )? RESULT text= paren_chunk )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:986:5: ( INIT text= paren_chunk ( COMMA )? ACTION text= paren_chunk ( COMMA )? ( REVERSE text= paren_chunk ( COMMA )? )? RESULT text= paren_chunk )
                     {
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:970:5: ( INIT text= paren_chunk ( COMMA )? ACTION text= paren_chunk ( COMMA )? ( REVERSE text= paren_chunk ( COMMA )? )? RESULT text= paren_chunk )
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:971:4: INIT text= paren_chunk ( COMMA )? ACTION text= paren_chunk ( COMMA )? ( REVERSE text= paren_chunk ( COMMA )? )? RESULT text= paren_chunk
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:986:5: ( INIT text= paren_chunk ( COMMA )? ACTION text= paren_chunk ( COMMA )? ( REVERSE text= paren_chunk ( COMMA )? )? RESULT text= paren_chunk )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:987:4: INIT text= paren_chunk ( COMMA )? ACTION text= paren_chunk ( COMMA )? ( REVERSE text= paren_chunk ( COMMA )? )? RESULT text= paren_chunk
                     {
-                    match(input,INIT,FOLLOW_INIT_in_accumulate_statement2708); if (failed) return d;
+                    match(input,INIT,FOLLOW_INIT_in_accumulate_statement2765); if (failed) return d;
                     if ( backtracking==0 ) {
 
                       				location.setType( Location.LOCATION_LHS_FROM_ACCUMULATE_INIT );
                       			
                     }
-                    pushFollow(FOLLOW_paren_chunk_in_accumulate_statement2721);
+                    pushFollow(FOLLOW_paren_chunk_in_accumulate_statement2778);
                     text=paren_chunk();
                     _fsp--;
                     if (failed) return d;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:975:21: ( COMMA )?
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:991:21: ( COMMA )?
                     int alt45=2;
                     int LA45_0 = input.LA(1);
 
@@ -4002,9 +4070,9 @@
                     }
                     switch (alt45) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:975:21: COMMA
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:991:21: COMMA
                             {
-                            match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement2723); if (failed) return d;
+                            match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement2780); if (failed) return d;
 
                             }
                             break;
@@ -4020,12 +4088,12 @@
                       				}
                       			
                     }
-                    match(input,ACTION,FOLLOW_ACTION_in_accumulate_statement2734); if (failed) return d;
-                    pushFollow(FOLLOW_paren_chunk_in_accumulate_statement2738);
+                    match(input,ACTION,FOLLOW_ACTION_in_accumulate_statement2791); if (failed) return d;
+                    pushFollow(FOLLOW_paren_chunk_in_accumulate_statement2795);
                     text=paren_chunk();
                     _fsp--;
                     if (failed) return d;
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:983:28: ( COMMA )?
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:999:28: ( COMMA )?
                     int alt46=2;
                     int LA46_0 = input.LA(1);
 
@@ -4034,9 +4102,9 @@
                     }
                     switch (alt46) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:983:28: COMMA
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:999:28: COMMA
                             {
-                            match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement2740); if (failed) return d;
+                            match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement2797); if (failed) return d;
 
                             }
                             break;
@@ -4052,7 +4120,7 @@
                       				}
                       			
                     }
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:991:4: ( REVERSE text= paren_chunk ( COMMA )? )?
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1007:4: ( REVERSE text= paren_chunk ( COMMA )? )?
                     int alt48=2;
                     int LA48_0 = input.LA(1);
 
@@ -4061,14 +4129,14 @@
                     }
                     switch (alt48) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:991:6: REVERSE text= paren_chunk ( COMMA )?
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1007:6: REVERSE text= paren_chunk ( COMMA )?
                             {
-                            match(input,REVERSE,FOLLOW_REVERSE_in_accumulate_statement2753); if (failed) return d;
-                            pushFollow(FOLLOW_paren_chunk_in_accumulate_statement2757);
+                            match(input,REVERSE,FOLLOW_REVERSE_in_accumulate_statement2810); if (failed) return d;
+                            pushFollow(FOLLOW_paren_chunk_in_accumulate_statement2814);
                             text=paren_chunk();
                             _fsp--;
                             if (failed) return d;
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:991:31: ( COMMA )?
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1007:31: ( COMMA )?
                             int alt47=2;
                             int LA47_0 = input.LA(1);
 
@@ -4077,9 +4145,9 @@
                             }
                             switch (alt47) {
                                 case 1 :
-                                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:991:31: COMMA
+                                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1007:31: COMMA
                                     {
-                                    match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement2759); if (failed) return d;
+                                    match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement2816); if (failed) return d;
 
                                     }
                                     break;
@@ -4101,8 +4169,8 @@
 
                     }
 
-                    match(input,RESULT,FOLLOW_RESULT_in_accumulate_statement2776); if (failed) return d;
-                    pushFollow(FOLLOW_paren_chunk_in_accumulate_statement2780);
+                    match(input,RESULT,FOLLOW_RESULT_in_accumulate_statement2833); if (failed) return d;
+                    pushFollow(FOLLOW_paren_chunk_in_accumulate_statement2837);
                     text=paren_chunk();
                     _fsp--;
                     if (failed) return d;
@@ -4121,14 +4189,14 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1009:3: (id= ID text= paren_chunk )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1025:3: (id= ID text= paren_chunk )
                     {
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1009:3: (id= ID text= paren_chunk )
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1010:4: id= ID text= paren_chunk
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1025:3: (id= ID text= paren_chunk )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1026:4: id= ID text= paren_chunk
                     {
                     id=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_accumulate_statement2806); if (failed) return d;
-                    pushFollow(FOLLOW_paren_chunk_in_accumulate_statement2810);
+                    match(input,ID,FOLLOW_ID_in_accumulate_statement2863); if (failed) return d;
+                    pushFollow(FOLLOW_paren_chunk_in_accumulate_statement2867);
                     text=paren_chunk();
                     _fsp--;
                     if (failed) return d;
@@ -4153,12 +4221,12 @@
 
             }
 
-            RIGHT_PAREN45=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_statement2827); if (failed) return d;
+            RIGHT_PAREN46=(Token)input.LT(1);
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_statement2884); if (failed) return d;
             if ( backtracking==0 ) {
 
               			location.setType( Location.LOCATION_LHS_BEGIN_OF_CONDITION );
-              			d.setEndCharacter( ((CommonToken)RIGHT_PAREN45).getStopIndex() );
+              			d.setEndCharacter( ((CommonToken)RIGHT_PAREN46).getStopIndex() );
               		
             }
 
@@ -4177,7 +4245,7 @@
 
 
     // $ANTLR start from_source
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1028:4: from_source[FromDescr from] returns [DeclarativeInvokerDescr ds] : ident= identifier ( options {k=1; } : args= paren_chunk )? ( expression_chain[$from, ad] )? ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1044:4: from_source[FromDescr from] returns [DeclarativeInvokerDescr ds] : ident= identifier ( options {k=1; } : args= paren_chunk )? ( expression_chain[$from, ad] )? ;
     public final DeclarativeInvokerDescr from_source(FromDescr from) throws RecognitionException {
         DeclarativeInvokerDescr ds = null;
 
@@ -4192,10 +4260,10 @@
         		FunctionCallDescr fc = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:2: (ident= identifier ( options {k=1; } : args= paren_chunk )? ( expression_chain[$from, ad] )? )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:4: ident= identifier ( options {k=1; } : args= paren_chunk )? ( expression_chain[$from, ad] )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1050:2: (ident= identifier ( options {k=1; } : args= paren_chunk )? ( expression_chain[$from, ad] )? )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1050:4: ident= identifier ( options {k=1; } : args= paren_chunk )? ( expression_chain[$from, ad] )?
             {
-            pushFollow(FOLLOW_identifier_in_from_source2855);
+            pushFollow(FOLLOW_identifier_in_from_source2912);
             ident=identifier();
             _fsp--;
             if (failed) return ds;
@@ -4209,7 +4277,7 @@
               			location.setProperty(Location.LOCATION_FROM_CONTENT, ident.start.getText());
               		
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1043:3: ( options {k=1; } : args= paren_chunk )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1059:3: ( options {k=1; } : args= paren_chunk )?
             int alt50=2;
             int LA50_0 = input.LA(1);
 
@@ -4218,9 +4286,9 @@
             }
             switch (alt50) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1050:5: args= paren_chunk
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1066:5: args= paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_from_source2883);
+                    pushFollow(FOLLOW_paren_chunk_in_from_source2940);
                     args=paren_chunk();
                     _fsp--;
                     if (failed) return ds;
@@ -4244,7 +4312,7 @@
 
             }
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1064:3: ( expression_chain[$from, ad] )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1080:3: ( expression_chain[$from, ad] )?
             int alt51=2;
             int LA51_0 = input.LA(1);
 
@@ -4253,9 +4321,9 @@
             }
             switch (alt51) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1064:3: expression_chain[$from, ad]
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1080:3: expression_chain[$from, ad]
                     {
-                    pushFollow(FOLLOW_expression_chain_in_from_source2896);
+                    pushFollow(FOLLOW_expression_chain_in_from_source2953);
                     expression_chain(from,  ad);
                     _fsp--;
                     if (failed) return ds;
@@ -4289,7 +4357,7 @@
 
 
     // $ANTLR start expression_chain
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1078:1: expression_chain[FromDescr from, AccessorDescr as] : ( DOT field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( expression_chain[from, as] )? ) ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1094:1: expression_chain[FromDescr from, AccessorDescr as] : ( DOT field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( expression_chain[from, as] )? ) ;
     public final void expression_chain(FromDescr from, AccessorDescr as) throws RecognitionException {
         identifier_return field = null;
 
@@ -4303,14 +4371,14 @@
         	    	MethodAccessDescr ma = null;	
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1083:2: ( ( DOT field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( expression_chain[from, as] )? ) )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1084:2: ( DOT field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( expression_chain[from, as] )? )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1099:2: ( ( DOT field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( expression_chain[from, as] )? ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1100:2: ( DOT field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( expression_chain[from, as] )? )
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1084:2: ( DOT field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( expression_chain[from, as] )? )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1084:4: DOT field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( expression_chain[from, as] )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1100:2: ( DOT field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( expression_chain[from, as] )? )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1100:4: DOT field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( expression_chain[from, as] )?
             {
-            match(input,DOT,FOLLOW_DOT_in_expression_chain2931); if (failed) return ;
-            pushFollow(FOLLOW_identifier_in_expression_chain2935);
+            match(input,DOT,FOLLOW_DOT_in_expression_chain2988); if (failed) return ;
+            pushFollow(FOLLOW_identifier_in_expression_chain2992);
             field=identifier();
             _fsp--;
             if (failed) return ;
@@ -4322,14 +4390,14 @@
               		fa.setEndCharacter( ((CommonToken)((Token)field.start)).getStopIndex() );
               	    
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1091:4: ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1107:4: ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )?
             int alt52=3;
             alt52 = dfa52.predict(input);
             switch (alt52) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1092:6: ( LEFT_SQUARE )=>sqarg= square_chunk
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1108:6: ( LEFT_SQUARE )=>sqarg= square_chunk
                     {
-                    pushFollow(FOLLOW_square_chunk_in_expression_chain2966);
+                    pushFollow(FOLLOW_square_chunk_in_expression_chain3023);
                     sqarg=square_chunk();
                     _fsp--;
                     if (failed) return ;
@@ -4343,9 +4411,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1098:6: ( LEFT_PAREN )=>paarg= paren_chunk
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1114:6: ( LEFT_PAREN )=>paarg= paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_expression_chain2999);
+                    pushFollow(FOLLOW_paren_chunk_in_expression_chain3056);
                     paarg=paren_chunk();
                     _fsp--;
                     if (failed) return ;
@@ -4363,7 +4431,7 @@
 
             }
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1106:4: ( expression_chain[from, as] )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1122:4: ( expression_chain[from, as] )?
             int alt53=2;
             int LA53_0 = input.LA(1);
 
@@ -4372,9 +4440,9 @@
             }
             switch (alt53) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1106:4: expression_chain[from, as]
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1122:4: expression_chain[from, as]
                     {
-                    pushFollow(FOLLOW_expression_chain_in_expression_chain3014);
+                    pushFollow(FOLLOW_expression_chain_in_expression_chain3071);
                     expression_chain(from,  as);
                     _fsp--;
                     if (failed) return ;
@@ -4411,12 +4479,12 @@
 
 
     // $ANTLR start collect_statement
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1120:1: collect_statement returns [CollectDescr d] : COLLECT LEFT_PAREN pattern= pattern_source RIGHT_PAREN ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1136:1: collect_statement returns [CollectDescr d] : COLLECT LEFT_PAREN pattern= pattern_source RIGHT_PAREN ;
     public final CollectDescr collect_statement() throws RecognitionException {
         CollectDescr d = null;
 
-        Token COLLECT46=null;
-        Token RIGHT_PAREN47=null;
+        Token COLLECT47=null;
+        Token RIGHT_PAREN48=null;
         BaseDescr pattern = null;
 
 
@@ -4424,29 +4492,29 @@
         		d = factory.createCollect();
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1124:2: ( COLLECT LEFT_PAREN pattern= pattern_source RIGHT_PAREN )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1125:10: COLLECT LEFT_PAREN pattern= pattern_source RIGHT_PAREN
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1140:2: ( COLLECT LEFT_PAREN pattern= pattern_source RIGHT_PAREN )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1141:10: COLLECT LEFT_PAREN pattern= pattern_source RIGHT_PAREN
             {
-            COLLECT46=(Token)input.LT(1);
-            match(input,COLLECT,FOLLOW_COLLECT_in_collect_statement3065); if (failed) return d;
+            COLLECT47=(Token)input.LT(1);
+            match(input,COLLECT,FOLLOW_COLLECT_in_collect_statement3122); if (failed) return d;
             if ( backtracking==0 ) {
                
-              			d.setLocation( offset(COLLECT46.getLine()), COLLECT46.getCharPositionInLine() );
-              			d.setStartCharacter( ((CommonToken)COLLECT46).getStartIndex() );
+              			d.setLocation( offset(COLLECT47.getLine()), COLLECT47.getCharPositionInLine() );
+              			d.setStartCharacter( ((CommonToken)COLLECT47).getStartIndex() );
               			location.setType( Location.LOCATION_LHS_FROM_COLLECT );
               		
             }
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_collect_statement3075); if (failed) return d;
-            pushFollow(FOLLOW_pattern_source_in_collect_statement3079);
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_collect_statement3132); if (failed) return d;
+            pushFollow(FOLLOW_pattern_source_in_collect_statement3136);
             pattern=pattern_source();
             _fsp--;
             if (failed) return d;
-            RIGHT_PAREN47=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_collect_statement3081); if (failed) return d;
+            RIGHT_PAREN48=(Token)input.LT(1);
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_collect_statement3138); if (failed) return d;
             if ( backtracking==0 ) {
 
               		        d.setInputPattern( (PatternDescr) pattern );
-              			d.setEndCharacter( ((CommonToken)RIGHT_PAREN47).getStopIndex() );
+              			d.setEndCharacter( ((CommonToken)RIGHT_PAREN48).getStopIndex() );
               			location.setType( Location.LOCATION_LHS_BEGIN_OF_CONDITION );
               		
             }
@@ -4466,11 +4534,11 @@
 
 
     // $ANTLR start fact_binding
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1139:1: fact_binding returns [BaseDescr d] : ID ':' (fe= fact[$ID.text] | LEFT_PAREN left= fact[$ID.text] ( ( OR | DOUBLE_PIPE ) right= fact[$ID.text] )* RIGHT_PAREN ) ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1155:1: fact_binding returns [BaseDescr d] : ID ':' (fe= fact[$ID.text] | LEFT_PAREN left= fact[$ID.text] ( ( OR | DOUBLE_PIPE ) right= fact[$ID.text] )* RIGHT_PAREN ) ;
     public final BaseDescr fact_binding() throws RecognitionException {
         BaseDescr d = null;
 
-        Token ID48=null;
+        Token ID49=null;
         BaseDescr fe = null;
 
         BaseDescr left = null;
@@ -4483,20 +4551,20 @@
         		OrDescr or = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1144:3: ( ID ':' (fe= fact[$ID.text] | LEFT_PAREN left= fact[$ID.text] ( ( OR | DOUBLE_PIPE ) right= fact[$ID.text] )* RIGHT_PAREN ) )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1145:4: ID ':' (fe= fact[$ID.text] | LEFT_PAREN left= fact[$ID.text] ( ( OR | DOUBLE_PIPE ) right= fact[$ID.text] )* RIGHT_PAREN )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1160:3: ( ID ':' (fe= fact[$ID.text] | LEFT_PAREN left= fact[$ID.text] ( ( OR | DOUBLE_PIPE ) right= fact[$ID.text] )* RIGHT_PAREN ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1161:4: ID ':' (fe= fact[$ID.text] | LEFT_PAREN left= fact[$ID.text] ( ( OR | DOUBLE_PIPE ) right= fact[$ID.text] )* RIGHT_PAREN )
             {
-            ID48=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_fact_binding3113); if (failed) return d;
-            match(input,74,FOLLOW_74_in_fact_binding3115); if (failed) return d;
+            ID49=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_fact_binding3170); if (failed) return d;
+            match(input,75,FOLLOW_75_in_fact_binding3172); if (failed) return d;
             if ( backtracking==0 ) {
 
                		        // handling incomplete parsing
                		        d = new PatternDescr( );
-               		        ((PatternDescr) d).setIdentifier( ID48.getText() );
+               		        ((PatternDescr) d).setIdentifier( ID49.getText() );
                		
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1151:3: (fe= fact[$ID.text] | LEFT_PAREN left= fact[$ID.text] ( ( OR | DOUBLE_PIPE ) right= fact[$ID.text] )* RIGHT_PAREN )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1167:3: (fe= fact[$ID.text] | LEFT_PAREN left= fact[$ID.text] ( ( OR | DOUBLE_PIPE ) right= fact[$ID.text] )* RIGHT_PAREN )
             int alt55=2;
             int LA55_0 = input.LA(1);
 
@@ -4509,16 +4577,16 @@
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1151:3: (fe= fact[$ID.text] | LEFT_PAREN left= fact[$ID.text] ( ( OR | DOUBLE_PIPE ) right= fact[$ID.text] )* RIGHT_PAREN )", 55, 0, input);
+                    new NoViableAltException("1167:3: (fe= fact[$ID.text] | LEFT_PAREN left= fact[$ID.text] ( ( OR | DOUBLE_PIPE ) right= fact[$ID.text] )* RIGHT_PAREN )", 55, 0, input);
 
                 throw nvae;
             }
             switch (alt55) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1151:5: fe= fact[$ID.text]
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1167:5: fe= fact[$ID.text]
                     {
-                    pushFollow(FOLLOW_fact_in_fact_binding3129);
-                    fe=fact(ID48.getText());
+                    pushFollow(FOLLOW_fact_in_fact_binding3186);
+                    fe=fact(ID49.getText());
                     _fsp--;
                     if (failed) return d;
                     if ( backtracking==0 ) {
@@ -4526,7 +4594,7 @@
                        		        // override previously instantiated pattern
                        			d =fe;
                        			if( d != null ) {
-                         			    d.setStartCharacter( ((CommonToken)ID48).getStartIndex() );
+                         			    d.setStartCharacter( ((CommonToken)ID49).getStartIndex() );
                          			}
                        		
                     }
@@ -4534,11 +4602,11 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1160:4: LEFT_PAREN left= fact[$ID.text] ( ( OR | DOUBLE_PIPE ) right= fact[$ID.text] )* RIGHT_PAREN
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1176:4: LEFT_PAREN left= fact[$ID.text] ( ( OR | DOUBLE_PIPE ) right= fact[$ID.text] )* RIGHT_PAREN
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_binding3145); if (failed) return d;
-                    pushFollow(FOLLOW_fact_in_fact_binding3149);
-                    left=fact(ID48.getText());
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_binding3202); if (failed) return d;
+                    pushFollow(FOLLOW_fact_in_fact_binding3206);
+                    left=fact(ID49.getText());
                     _fsp--;
                     if (failed) return d;
                     if ( backtracking==0 ) {
@@ -4546,11 +4614,11 @@
                        		        // override previously instantiated pattern
                        			d =left;
                        			if( d != null ) {
-                         			    d.setStartCharacter( ((CommonToken)ID48).getStartIndex() );
+                         			    d.setStartCharacter( ((CommonToken)ID49).getStartIndex() );
                          			}
                        		
                     }
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1168:4: ( ( OR | DOUBLE_PIPE ) right= fact[$ID.text] )*
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1184:4: ( ( OR | DOUBLE_PIPE ) right= fact[$ID.text] )*
                     loop54:
                     do {
                         int alt54=2;
@@ -4563,7 +4631,7 @@
 
                         switch (alt54) {
                     	case 1 :
-                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1168:6: ( OR | DOUBLE_PIPE ) right= fact[$ID.text]
+                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1184:6: ( OR | DOUBLE_PIPE ) right= fact[$ID.text]
                     	    {
                     	    if ( (input.LA(1)>=OR && input.LA(1)<=DOUBLE_PIPE) ) {
                     	        input.consume();
@@ -4573,11 +4641,11 @@
                     	        if (backtracking>0) {failed=true; return d;}
                     	        MismatchedSetException mse =
                     	            new MismatchedSetException(null,input);
-                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_fact_binding3162);    throw mse;
+                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_fact_binding3219);    throw mse;
                     	    }
 
-                    	    pushFollow(FOLLOW_fact_in_fact_binding3174);
-                    	    right=fact(ID48.getText());
+                    	    pushFollow(FOLLOW_fact_in_fact_binding3231);
+                    	    right=fact(ID49.getText());
                     	    _fsp--;
                     	    if (failed) return d;
                     	    if ( backtracking==0 ) {
@@ -4599,7 +4667,7 @@
                         }
                     } while (true);
 
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_binding3192); if (failed) return d;
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_binding3249); if (failed) return d;
 
                     }
                     break;
@@ -4622,12 +4690,12 @@
 
 
     // $ANTLR start fact
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1183:1: fact[String ident] returns [BaseDescr d] : id= qualified_id LEFT_PAREN ( constraints[pattern] )? RIGHT_PAREN ( EOF )? ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1199:1: fact[String ident] returns [BaseDescr d] : id= qualified_id LEFT_PAREN ( constraints[pattern] )? RIGHT_PAREN ( EOF )? ;
     public final BaseDescr fact(String ident) throws RecognitionException {
         BaseDescr d = null;
 
-        Token LEFT_PAREN49=null;
-        Token RIGHT_PAREN50=null;
+        Token LEFT_PAREN50=null;
+        Token RIGHT_PAREN51=null;
         qualified_id_return id = null;
 
 
@@ -4636,8 +4704,8 @@
         		PatternDescr pattern = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1188:3: (id= qualified_id LEFT_PAREN ( constraints[pattern] )? RIGHT_PAREN ( EOF )? )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1189:11: id= qualified_id LEFT_PAREN ( constraints[pattern] )? RIGHT_PAREN ( EOF )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1204:3: (id= qualified_id LEFT_PAREN ( constraints[pattern] )? RIGHT_PAREN ( EOF )? )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1205:11: id= qualified_id LEFT_PAREN ( constraints[pattern] )? RIGHT_PAREN ( EOF )?
             {
             if ( backtracking==0 ) {
 
@@ -4648,7 +4716,7 @@
                			d = pattern; 
                	        
             }
-            pushFollow(FOLLOW_qualified_id_in_fact3247);
+            pushFollow(FOLLOW_qualified_id_in_fact3304);
             id=qualified_id();
             _fsp--;
             if (failed) return d;
@@ -4661,18 +4729,18 @@
                			}
                		
             }
-            LEFT_PAREN49=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact3257); if (failed) return d;
+            LEFT_PAREN50=(Token)input.LT(1);
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact3314); if (failed) return d;
             if ( backtracking==0 ) {
 
               		        location.setType( Location.LOCATION_LHS_INSIDE_CONDITION_START );
                           		location.setProperty( Location.LOCATION_PROPERTY_CLASS_NAME, id.text );
                				
-               			pattern.setLocation( offset(LEFT_PAREN49.getLine()), LEFT_PAREN49.getCharPositionInLine() );
-               			pattern.setLeftParentCharacter( ((CommonToken)LEFT_PAREN49).getStartIndex() );
+               			pattern.setLocation( offset(LEFT_PAREN50.getLine()), LEFT_PAREN50.getCharPositionInLine() );
+               			pattern.setLeftParentCharacter( ((CommonToken)LEFT_PAREN50).getStartIndex() );
                		
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1212:4: ( constraints[pattern] )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1228:4: ( constraints[pattern] )?
             int alt56=2;
             int LA56_0 = input.LA(1);
 
@@ -4681,9 +4749,9 @@
             }
             switch (alt56) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1212:4: constraints[pattern]
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1228:4: constraints[pattern]
                     {
-                    pushFollow(FOLLOW_constraints_in_fact3269);
+                    pushFollow(FOLLOW_constraints_in_fact3326);
                     constraints(pattern);
                     _fsp--;
                     if (failed) return d;
@@ -4693,19 +4761,19 @@
 
             }
 
-            RIGHT_PAREN50=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact3276); if (failed) return d;
+            RIGHT_PAREN51=(Token)input.LT(1);
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact3333); if (failed) return d;
             if ( backtracking==0 ) {
 
-              		        if( ")".equals( RIGHT_PAREN50.getText() ) ) {
+              		        if( ")".equals( RIGHT_PAREN51.getText() ) ) {
               				this.location.setType( Location.LOCATION_LHS_BEGIN_OF_CONDITION );
-              				pattern.setEndLocation( offset(RIGHT_PAREN50.getLine()), RIGHT_PAREN50.getCharPositionInLine() );	
-              				pattern.setEndCharacter( ((CommonToken)RIGHT_PAREN50).getStopIndex() );
-              		        	pattern.setRightParentCharacter( ((CommonToken)RIGHT_PAREN50).getStartIndex() );
+              				pattern.setEndLocation( offset(RIGHT_PAREN51.getLine()), RIGHT_PAREN51.getCharPositionInLine() );	
+              				pattern.setEndCharacter( ((CommonToken)RIGHT_PAREN51).getStopIndex() );
+              		        	pattern.setRightParentCharacter( ((CommonToken)RIGHT_PAREN51).getStartIndex() );
               		        }
                		
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1222:4: ( EOF )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1238:4: ( EOF )?
             int alt57=2;
             int LA57_0 = input.LA(1);
 
@@ -4714,9 +4782,9 @@
             }
             switch (alt57) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1222:4: EOF
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1238:4: EOF
                     {
-                    match(input,EOF,FOLLOW_EOF_in_fact3285); if (failed) return d;
+                    match(input,EOF,FOLLOW_EOF_in_fact3342); if (failed) return d;
 
                     }
                     break;
@@ -4739,17 +4807,17 @@
 
 
     // $ANTLR start constraints
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1226:1: constraints[PatternDescr pattern] : constraint[$pattern] ( COMMA constraint[$pattern] )* ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1242:1: constraints[PatternDescr pattern] : constraint[$pattern] ( COMMA constraint[$pattern] )* ;
     public final void constraints(PatternDescr pattern) throws RecognitionException {
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1227:2: ( constraint[$pattern] ( COMMA constraint[$pattern] )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1227:4: constraint[$pattern] ( COMMA constraint[$pattern] )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1243:2: ( constraint[$pattern] ( COMMA constraint[$pattern] )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1243:4: constraint[$pattern] ( COMMA constraint[$pattern] )*
             {
-            pushFollow(FOLLOW_constraint_in_constraints3303);
+            pushFollow(FOLLOW_constraint_in_constraints3360);
             constraint(pattern);
             _fsp--;
             if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1228:3: ( COMMA constraint[$pattern] )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1244:3: ( COMMA constraint[$pattern] )*
             loop58:
             do {
                 int alt58=2;
@@ -4762,13 +4830,13 @@
 
                 switch (alt58) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1228:5: COMMA constraint[$pattern]
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1244:5: COMMA constraint[$pattern]
             	    {
-            	    match(input,COMMA,FOLLOW_COMMA_in_constraints3310); if (failed) return ;
+            	    match(input,COMMA,FOLLOW_COMMA_in_constraints3367); if (failed) return ;
             	    if ( backtracking==0 ) {
             	       location.setType( Location.LOCATION_LHS_INSIDE_CONDITION_START ); 
             	    }
-            	    pushFollow(FOLLOW_constraint_in_constraints3319);
+            	    pushFollow(FOLLOW_constraint_in_constraints3376);
             	    constraint(pattern);
             	    _fsp--;
             	    if (failed) return ;
@@ -4797,7 +4865,7 @@
 
 
     // $ANTLR start constraint
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1233:1: constraint[PatternDescr pattern] : or_constr[top] ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1249:1: constraint[PatternDescr pattern] : or_constr[top] ;
     public final void constraint(PatternDescr pattern) throws RecognitionException {
 
         		ConditionalElementDescr top = null;
@@ -4805,15 +4873,15 @@
         		location.setProperty(Location.LOCATION_PROPERTY_PROPERTY_NAME, input.LT(1).getText() );
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1239:2: ( or_constr[top] )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1240:3: or_constr[top]
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1255:2: ( or_constr[top] )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1256:3: or_constr[top]
             {
             if ( backtracking==0 ) {
 
               			top = pattern.getConstraint();
               		
             }
-            pushFollow(FOLLOW_or_constr_in_constraint3352);
+            pushFollow(FOLLOW_or_constr_in_constraint3409);
             or_constr(top);
             _fsp--;
             if (failed) return ;
@@ -4833,20 +4901,20 @@
 
 
     // $ANTLR start or_constr
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1246:1: or_constr[ConditionalElementDescr base] : and_constr[or] ( DOUBLE_PIPE and_constr[or] )* ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1262:1: or_constr[ConditionalElementDescr base] : and_constr[or] ( DOUBLE_PIPE and_constr[or] )* ;
     public final void or_constr(ConditionalElementDescr base) throws RecognitionException {
 
         		OrDescr or = new OrDescr();
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1250:2: ( and_constr[or] ( DOUBLE_PIPE and_constr[or] )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1251:3: and_constr[or] ( DOUBLE_PIPE and_constr[or] )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1266:2: ( and_constr[or] ( DOUBLE_PIPE and_constr[or] )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1267:3: and_constr[or] ( DOUBLE_PIPE and_constr[or] )*
             {
-            pushFollow(FOLLOW_and_constr_in_or_constr3375);
+            pushFollow(FOLLOW_and_constr_in_or_constr3432);
             and_constr(or);
             _fsp--;
             if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1252:3: ( DOUBLE_PIPE and_constr[or] )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1268:3: ( DOUBLE_PIPE and_constr[or] )*
             loop59:
             do {
                 int alt59=2;
@@ -4859,15 +4927,15 @@
 
                 switch (alt59) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1252:5: DOUBLE_PIPE and_constr[or]
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1268:5: DOUBLE_PIPE and_constr[or]
             	    {
-            	    match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_constr3383); if (failed) return ;
+            	    match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_constr3440); if (failed) return ;
             	    if ( backtracking==0 ) {
 
             	      			location.setType(Location.LOCATION_LHS_INSIDE_CONDITION_START);
             	      		
             	    }
-            	    pushFollow(FOLLOW_and_constr_in_or_constr3392);
+            	    pushFollow(FOLLOW_and_constr_in_or_constr3449);
             	    and_constr(or);
             	    _fsp--;
             	    if (failed) return ;
@@ -4905,20 +4973,20 @@
 
 
     // $ANTLR start and_constr
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1267:1: and_constr[ConditionalElementDescr base] : unary_constr[and] ( DOUBLE_AMPER unary_constr[and] )* ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1283:1: and_constr[ConditionalElementDescr base] : unary_constr[and] ( DOUBLE_AMPER unary_constr[and] )* ;
     public final void and_constr(ConditionalElementDescr base) throws RecognitionException {
 
         		AndDescr and = new AndDescr();
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1271:2: ( unary_constr[and] ( DOUBLE_AMPER unary_constr[and] )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1272:3: unary_constr[and] ( DOUBLE_AMPER unary_constr[and] )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1287:2: ( unary_constr[and] ( DOUBLE_AMPER unary_constr[and] )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1288:3: unary_constr[and] ( DOUBLE_AMPER unary_constr[and] )*
             {
-            pushFollow(FOLLOW_unary_constr_in_and_constr3424);
+            pushFollow(FOLLOW_unary_constr_in_and_constr3481);
             unary_constr(and);
             _fsp--;
             if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1273:3: ( DOUBLE_AMPER unary_constr[and] )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1289:3: ( DOUBLE_AMPER unary_constr[and] )*
             loop60:
             do {
                 int alt60=2;
@@ -4931,15 +4999,15 @@
 
                 switch (alt60) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1273:5: DOUBLE_AMPER unary_constr[and]
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1289:5: DOUBLE_AMPER unary_constr[and]
             	    {
-            	    match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_constr3432); if (failed) return ;
+            	    match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_constr3489); if (failed) return ;
             	    if ( backtracking==0 ) {
 
             	      			location.setType(Location.LOCATION_LHS_INSIDE_CONDITION_START);
             	      		
             	    }
-            	    pushFollow(FOLLOW_unary_constr_in_and_constr3441);
+            	    pushFollow(FOLLOW_unary_constr_in_and_constr3498);
             	    unary_constr(and);
             	    _fsp--;
             	    if (failed) return ;
@@ -4977,18 +5045,19 @@
 
 
     // $ANTLR start unary_constr
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1288:1: unary_constr[ConditionalElementDescr base] : ( field_constraint[$base] | LEFT_PAREN or_constr[$base] RIGHT_PAREN | EVAL predicate[$base] ) ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1304:1: unary_constr[ConditionalElementDescr base] : ( field_constraint[$base] | LEFT_PAREN or_constr[$base] RIGHT_PAREN | EVAL predicate[$base] ) ;
     public final void unary_constr(ConditionalElementDescr base) throws RecognitionException {
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1289:2: ( ( field_constraint[$base] | LEFT_PAREN or_constr[$base] RIGHT_PAREN | EVAL predicate[$base] ) )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1290:3: ( field_constraint[$base] | LEFT_PAREN or_constr[$base] RIGHT_PAREN | EVAL predicate[$base] )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1305:2: ( ( field_constraint[$base] | LEFT_PAREN or_constr[$base] RIGHT_PAREN | EVAL predicate[$base] ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1306:3: ( field_constraint[$base] | LEFT_PAREN or_constr[$base] RIGHT_PAREN | EVAL predicate[$base] )
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1290:3: ( field_constraint[$base] | LEFT_PAREN or_constr[$base] RIGHT_PAREN | EVAL predicate[$base] )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1306:3: ( field_constraint[$base] | LEFT_PAREN or_constr[$base] RIGHT_PAREN | EVAL predicate[$base] )
             int alt61=3;
             switch ( input.LA(1) ) {
             case PACKAGE:
             case IMPORT:
             case FUNCTION:
+            case EVENT:
             case ID:
             case GLOBAL:
             case QUERY:
@@ -5030,16 +5099,16 @@
             default:
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1290:3: ( field_constraint[$base] | LEFT_PAREN or_constr[$base] RIGHT_PAREN | EVAL predicate[$base] )", 61, 0, input);
+                    new NoViableAltException("1306:3: ( field_constraint[$base] | LEFT_PAREN or_constr[$base] RIGHT_PAREN | EVAL predicate[$base] )", 61, 0, input);
 
                 throw nvae;
             }
 
             switch (alt61) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1290:5: field_constraint[$base]
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1306:5: field_constraint[$base]
                     {
-                    pushFollow(FOLLOW_field_constraint_in_unary_constr3469);
+                    pushFollow(FOLLOW_field_constraint_in_unary_constr3526);
                     field_constraint(base);
                     _fsp--;
                     if (failed) return ;
@@ -5047,22 +5116,22 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1291:5: LEFT_PAREN or_constr[$base] RIGHT_PAREN
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1307:5: LEFT_PAREN or_constr[$base] RIGHT_PAREN
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_unary_constr3477); if (failed) return ;
-                    pushFollow(FOLLOW_or_constr_in_unary_constr3479);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_unary_constr3534); if (failed) return ;
+                    pushFollow(FOLLOW_or_constr_in_unary_constr3536);
                     or_constr(base);
                     _fsp--;
                     if (failed) return ;
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_unary_constr3482); if (failed) return ;
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_unary_constr3539); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1292:5: EVAL predicate[$base]
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1308:5: EVAL predicate[$base]
                     {
-                    match(input,EVAL,FOLLOW_EVAL_in_unary_constr3488); if (failed) return ;
-                    pushFollow(FOLLOW_predicate_in_unary_constr3490);
+                    match(input,EVAL,FOLLOW_EVAL_in_unary_constr3545); if (failed) return ;
+                    pushFollow(FOLLOW_predicate_in_unary_constr3547);
                     predicate(base);
                     _fsp--;
                     if (failed) return ;
@@ -5088,9 +5157,9 @@
 
 
     // $ANTLR start field_constraint
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1296:1: field_constraint[ConditionalElementDescr base] : ( ( ID ':' f= accessor_path ( ( options {backtrack=true; } : or_restr_connective[top] ) | '->' predicate[$base] )? ) | (f= accessor_path ( options {backtrack=true; } : or_restr_connective[top] ) ) );
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1312:1: field_constraint[ConditionalElementDescr base] : ( ( ID ':' f= accessor_path ( ( options {backtrack=true; } : or_restr_connective[top] ) | '->' predicate[$base] )? ) | (f= accessor_path ( options {backtrack=true; } : or_restr_connective[top] ) ) );
     public final void field_constraint(ConditionalElementDescr base) throws RecognitionException {
-        Token ID51=null;
+        Token ID52=null;
         accessor_path_return f = null;
 
 
@@ -5100,58 +5169,58 @@
         		RestrictionConnectiveDescr top = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1302:2: ( ( ID ':' f= accessor_path ( ( options {backtrack=true; } : or_restr_connective[top] ) | '->' predicate[$base] )? ) | (f= accessor_path ( options {backtrack=true; } : or_restr_connective[top] ) ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1318:2: ( ( ID ':' f= accessor_path ( ( options {backtrack=true; } : or_restr_connective[top] ) | '->' predicate[$base] )? ) | (f= accessor_path ( options {backtrack=true; } : or_restr_connective[top] ) ) )
             int alt63=2;
             int LA63_0 = input.LA(1);
 
             if ( (LA63_0==ID) ) {
                 int LA63_1 = input.LA(2);
 
-                if ( (LA63_1==74) ) {
+                if ( (LA63_1==75) ) {
                     alt63=1;
                 }
-                else if ( (LA63_1==DOT||LA63_1==LEFT_PAREN||LA63_1==NOT||(LA63_1>=CONTAINS && LA63_1<=IN)||LA63_1==LEFT_SQUARE||(LA63_1>=76 && LA63_1<=81)) ) {
+                else if ( (LA63_1==DOT||LA63_1==LEFT_PAREN||LA63_1==NOT||(LA63_1>=CONTAINS && LA63_1<=IN)||LA63_1==LEFT_SQUARE||(LA63_1>=77 && LA63_1<=82)) ) {
                     alt63=2;
                 }
                 else {
                     if (backtracking>0) {failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1296:1: field_constraint[ConditionalElementDescr base] : ( ( ID ':' f= accessor_path ( ( options {backtrack=true; } : or_restr_connective[top] ) | '->' predicate[$base] )? ) | (f= accessor_path ( options {backtrack=true; } : or_restr_connective[top] ) ) );", 63, 1, input);
+                        new NoViableAltException("1312:1: field_constraint[ConditionalElementDescr base] : ( ( ID ':' f= accessor_path ( ( options {backtrack=true; } : or_restr_connective[top] ) | '->' predicate[$base] )? ) | (f= accessor_path ( options {backtrack=true; } : or_restr_connective[top] ) ) );", 63, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( ((LA63_0>=PACKAGE && LA63_0<=FUNCTION)||LA63_0==GLOBAL||(LA63_0>=QUERY && LA63_0<=ATTRIBUTES)||LA63_0==ENABLED||LA63_0==SALIENCE||(LA63_0>=DURATION && LA63_0<=DIALECT)||LA63_0==FROM||(LA63_0>=INIT && LA63_0<=RESULT)||(LA63_0>=CONTAINS && LA63_0<=IN)||LA63_0==THEN) ) {
+            else if ( ((LA63_0>=PACKAGE && LA63_0<=EVENT)||LA63_0==GLOBAL||(LA63_0>=QUERY && LA63_0<=ATTRIBUTES)||LA63_0==ENABLED||LA63_0==SALIENCE||(LA63_0>=DURATION && LA63_0<=DIALECT)||LA63_0==FROM||(LA63_0>=INIT && LA63_0<=RESULT)||(LA63_0>=CONTAINS && LA63_0<=IN)||LA63_0==THEN) ) {
                 alt63=2;
             }
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1296:1: field_constraint[ConditionalElementDescr base] : ( ( ID ':' f= accessor_path ( ( options {backtrack=true; } : or_restr_connective[top] ) | '->' predicate[$base] )? ) | (f= accessor_path ( options {backtrack=true; } : or_restr_connective[top] ) ) );", 63, 0, input);
+                    new NoViableAltException("1312:1: field_constraint[ConditionalElementDescr base] : ( ( ID ':' f= accessor_path ( ( options {backtrack=true; } : or_restr_connective[top] ) | '->' predicate[$base] )? ) | (f= accessor_path ( options {backtrack=true; } : or_restr_connective[top] ) ) );", 63, 0, input);
 
                 throw nvae;
             }
             switch (alt63) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1303:10: ( ID ':' f= accessor_path ( ( options {backtrack=true; } : or_restr_connective[top] ) | '->' predicate[$base] )? )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1319:10: ( ID ':' f= accessor_path ( ( options {backtrack=true; } : or_restr_connective[top] ) | '->' predicate[$base] )? )
                     {
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1303:10: ( ID ':' f= accessor_path ( ( options {backtrack=true; } : or_restr_connective[top] ) | '->' predicate[$base] )? )
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1304:3: ID ':' f= accessor_path ( ( options {backtrack=true; } : or_restr_connective[top] ) | '->' predicate[$base] )?
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1319:10: ( ID ':' f= accessor_path ( ( options {backtrack=true; } : or_restr_connective[top] ) | '->' predicate[$base] )? )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1320:3: ID ':' f= accessor_path ( ( options {backtrack=true; } : or_restr_connective[top] ) | '->' predicate[$base] )?
                     {
-                    ID51=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_field_constraint3529); if (failed) return ;
-                    match(input,74,FOLLOW_74_in_field_constraint3531); if (failed) return ;
+                    ID52=(Token)input.LT(1);
+                    match(input,ID,FOLLOW_ID_in_field_constraint3586); if (failed) return ;
+                    match(input,75,FOLLOW_75_in_field_constraint3588); if (failed) return ;
                     if ( backtracking==0 ) {
                        
                       			fbd = new FieldBindingDescr();
-                      			fbd.setIdentifier( ID51.getText() );
-                      			fbd.setLocation( offset(ID51.getLine()), ID51.getCharPositionInLine() );
-                      			fbd.setStartCharacter( ((CommonToken)ID51).getStartIndex() );
+                      			fbd.setIdentifier( ID52.getText() );
+                      			fbd.setLocation( offset(ID52.getLine()), ID52.getCharPositionInLine() );
+                      			fbd.setStartCharacter( ((CommonToken)ID52).getStartIndex() );
                       			base.addDescr( fbd );
 
                       		    
                     }
-                    pushFollow(FOLLOW_accessor_path_in_field_constraint3550);
+                    pushFollow(FOLLOW_accessor_path_in_field_constraint3607);
                     f=accessor_path();
                     _fsp--;
                     if (failed) return ;
@@ -5166,7 +5235,7 @@
                       			if ( fbd != null ) {
                       			    fbd.setFieldName( f.text );
                       			    // may have been overwritten
-                      			    fbd.setStartCharacter( ((CommonToken)ID51).getStartIndex() );
+                      			    fbd.setStartCharacter( ((CommonToken)ID52).getStartIndex() );
                       			} 
                       			fc = new FieldConstraintDescr(f.text);
                       			fc.setLocation( offset(((Token)f.start).getLine()), ((Token)f.start).getCharPositionInLine() );
@@ -5174,37 +5243,37 @@
                       			top = fc.getRestriction();
                       			
                       			// it must be a field constraint, as it is not a binding
-                      			if( ID51 == null ) {
+                      			if( ID52 == null ) {
                       			    base.addDescr( fc );
                       			}
                       		    }
                       		
                     }
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1338:3: ( ( options {backtrack=true; } : or_restr_connective[top] ) | '->' predicate[$base] )?
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1354:3: ( ( options {backtrack=true; } : or_restr_connective[top] ) | '->' predicate[$base] )?
                     int alt62=3;
                     int LA62_0 = input.LA(1);
 
-                    if ( (LA62_0==LEFT_PAREN||LA62_0==NOT||(LA62_0>=CONTAINS && LA62_0<=IN)||(LA62_0>=76 && LA62_0<=81)) ) {
+                    if ( (LA62_0==LEFT_PAREN||LA62_0==NOT||(LA62_0>=CONTAINS && LA62_0<=IN)||(LA62_0>=77 && LA62_0<=82)) ) {
                         alt62=1;
                     }
-                    else if ( (LA62_0==75) ) {
+                    else if ( (LA62_0==76) ) {
                         alt62=2;
                     }
                     switch (alt62) {
                         case 1 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1339:4: ( options {backtrack=true; } : or_restr_connective[top] )
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1355:4: ( options {backtrack=true; } : or_restr_connective[top] )
                             {
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1339:4: ( options {backtrack=true; } : or_restr_connective[top] )
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1340:6: or_restr_connective[top]
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1355:4: ( options {backtrack=true; } : or_restr_connective[top] )
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1356:6: or_restr_connective[top]
                             {
-                            pushFollow(FOLLOW_or_restr_connective_in_field_constraint3578);
+                            pushFollow(FOLLOW_or_restr_connective_in_field_constraint3635);
                             or_restr_connective(top);
                             _fsp--;
                             if (failed) return ;
                             if ( backtracking==0 ) {
 
                               				// we must add now as we didn't before
-                              				if( ID51 != null) {
+                              				if( ID52 != null) {
                               				    base.addDescr( fc );
                               				}
                               			
@@ -5216,10 +5285,10 @@
                             }
                             break;
                         case 2 :
-                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1349:4: '->' predicate[$base]
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1365:4: '->' predicate[$base]
                             {
-                            match(input,75,FOLLOW_75_in_field_constraint3598); if (failed) return ;
-                            pushFollow(FOLLOW_predicate_in_field_constraint3600);
+                            match(input,76,FOLLOW_76_in_field_constraint3655); if (failed) return ;
+                            pushFollow(FOLLOW_predicate_in_field_constraint3657);
                             predicate(base);
                             _fsp--;
                             if (failed) return ;
@@ -5236,12 +5305,12 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1353:3: (f= accessor_path ( options {backtrack=true; } : or_restr_connective[top] ) )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1369:3: (f= accessor_path ( options {backtrack=true; } : or_restr_connective[top] ) )
                     {
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1353:3: (f= accessor_path ( options {backtrack=true; } : or_restr_connective[top] ) )
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1354:3: f= accessor_path ( options {backtrack=true; } : or_restr_connective[top] )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1369:3: (f= accessor_path ( options {backtrack=true; } : or_restr_connective[top] ) )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1370:3: f= accessor_path ( options {backtrack=true; } : or_restr_connective[top] )
                     {
-                    pushFollow(FOLLOW_accessor_path_in_field_constraint3626);
+                    pushFollow(FOLLOW_accessor_path_in_field_constraint3683);
                     f=accessor_path();
                     _fsp--;
                     if (failed) return ;
@@ -5262,10 +5331,10 @@
                       		    }
                       		
                     }
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1370:3: ( options {backtrack=true; } : or_restr_connective[top] )
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1371:5: or_restr_connective[top]
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1386:3: ( options {backtrack=true; } : or_restr_connective[top] )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1387:5: or_restr_connective[top]
                     {
-                    pushFollow(FOLLOW_or_restr_connective_in_field_constraint3648);
+                    pushFollow(FOLLOW_or_restr_connective_in_field_constraint3705);
                     or_restr_connective(top);
                     _fsp--;
                     if (failed) return ;
@@ -5302,35 +5371,35 @@
 
 
     // $ANTLR start or_restr_connective
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1388:1: or_restr_connective[ RestrictionConnectiveDescr base ] options {backtrack=true; } : and_restr_connective[or] ( options {backtrack=true; } : DOUBLE_PIPE and_restr_connective[or] )* ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1404:1: or_restr_connective[ RestrictionConnectiveDescr base ] options {backtrack=true; } : and_restr_connective[or] ( options {backtrack=true; } : DOUBLE_PIPE and_restr_connective[or] )* ;
     public final void or_restr_connective(RestrictionConnectiveDescr base) throws RecognitionException {
 
         		RestrictionConnectiveDescr or = new RestrictionConnectiveDescr(RestrictionConnectiveDescr.OR);
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1395:2: ( and_restr_connective[or] ( options {backtrack=true; } : DOUBLE_PIPE and_restr_connective[or] )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1396:3: and_restr_connective[or] ( options {backtrack=true; } : DOUBLE_PIPE and_restr_connective[or] )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1411:2: ( and_restr_connective[or] ( options {backtrack=true; } : DOUBLE_PIPE and_restr_connective[or] )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1412:3: and_restr_connective[or] ( options {backtrack=true; } : DOUBLE_PIPE and_restr_connective[or] )*
             {
-            pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective3699);
+            pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective3756);
             and_restr_connective(or);
             _fsp--;
             if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1397:3: ( options {backtrack=true; } : DOUBLE_PIPE and_restr_connective[or] )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1413:3: ( options {backtrack=true; } : DOUBLE_PIPE and_restr_connective[or] )*
             loop64:
             do {
                 int alt64=2;
                 alt64 = dfa64.predict(input);
                 switch (alt64) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1399:6: DOUBLE_PIPE and_restr_connective[or]
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1415:6: DOUBLE_PIPE and_restr_connective[or]
             	    {
-            	    match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_restr_connective3723); if (failed) return ;
+            	    match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_restr_connective3780); if (failed) return ;
             	    if ( backtracking==0 ) {
 
             	      				location.setType(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
             	      			
             	    }
-            	    pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective3734);
+            	    pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective3791);
             	    and_restr_connective(or);
             	    _fsp--;
             	    if (failed) return ;
@@ -5366,7 +5435,7 @@
 
 
     // $ANTLR start and_restr_connective
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1414:1: and_restr_connective[ RestrictionConnectiveDescr base ] : constraint_expression[and] ( options {backtrack=true; } : t= DOUBLE_AMPER constraint_expression[and] )* ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1430:1: and_restr_connective[ RestrictionConnectiveDescr base ] : constraint_expression[and] ( options {backtrack=true; } : t= DOUBLE_AMPER constraint_expression[and] )* ;
     public final void and_restr_connective(RestrictionConnectiveDescr base) throws RecognitionException {
         Token t=null;
 
@@ -5374,30 +5443,30 @@
         		RestrictionConnectiveDescr and = new RestrictionConnectiveDescr(RestrictionConnectiveDescr.AND);
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1418:2: ( constraint_expression[and] ( options {backtrack=true; } : t= DOUBLE_AMPER constraint_expression[and] )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1419:3: constraint_expression[and] ( options {backtrack=true; } : t= DOUBLE_AMPER constraint_expression[and] )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1434:2: ( constraint_expression[and] ( options {backtrack=true; } : t= DOUBLE_AMPER constraint_expression[and] )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1435:3: constraint_expression[and] ( options {backtrack=true; } : t= DOUBLE_AMPER constraint_expression[and] )*
             {
-            pushFollow(FOLLOW_constraint_expression_in_and_restr_connective3766);
+            pushFollow(FOLLOW_constraint_expression_in_and_restr_connective3823);
             constraint_expression(and);
             _fsp--;
             if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1420:3: ( options {backtrack=true; } : t= DOUBLE_AMPER constraint_expression[and] )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1436:3: ( options {backtrack=true; } : t= DOUBLE_AMPER constraint_expression[and] )*
             loop65:
             do {
                 int alt65=2;
                 alt65 = dfa65.predict(input);
                 switch (alt65) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1421:5: t= DOUBLE_AMPER constraint_expression[and]
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1437:5: t= DOUBLE_AMPER constraint_expression[and]
             	    {
             	    t=(Token)input.LT(1);
-            	    match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_restr_connective3787); if (failed) return ;
+            	    match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_restr_connective3844); if (failed) return ;
             	    if ( backtracking==0 ) {
 
             	      				location.setType(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
             	      			
             	    }
-            	    pushFollow(FOLLOW_constraint_expression_in_and_restr_connective3798);
+            	    pushFollow(FOLLOW_constraint_expression_in_and_restr_connective3855);
             	    constraint_expression(and);
             	    _fsp--;
             	    if (failed) return ;
@@ -5433,13 +5502,13 @@
 
 
     // $ANTLR start constraint_expression
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1436:1: constraint_expression[RestrictionConnectiveDescr base] : ( compound_operator[$base] | simple_operator[$base] | LEFT_PAREN or_restr_connective[$base] RIGHT_PAREN ) ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1452:1: constraint_expression[RestrictionConnectiveDescr base] : ( compound_operator[$base] | simple_operator[$base] | LEFT_PAREN or_restr_connective[$base] RIGHT_PAREN ) ;
     public final void constraint_expression(RestrictionConnectiveDescr base) throws RecognitionException {
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1437:9: ( ( compound_operator[$base] | simple_operator[$base] | LEFT_PAREN or_restr_connective[$base] RIGHT_PAREN ) )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1438:3: ( compound_operator[$base] | simple_operator[$base] | LEFT_PAREN or_restr_connective[$base] RIGHT_PAREN )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1453:9: ( ( compound_operator[$base] | simple_operator[$base] | LEFT_PAREN or_restr_connective[$base] RIGHT_PAREN ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1454:3: ( compound_operator[$base] | simple_operator[$base] | LEFT_PAREN or_restr_connective[$base] RIGHT_PAREN )
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1438:3: ( compound_operator[$base] | simple_operator[$base] | LEFT_PAREN or_restr_connective[$base] RIGHT_PAREN )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1454:3: ( compound_operator[$base] | simple_operator[$base] | LEFT_PAREN or_restr_connective[$base] RIGHT_PAREN )
             int alt66=3;
             switch ( input.LA(1) ) {
             case IN:
@@ -5460,7 +5529,7 @@
                 else {
                     if (backtracking>0) {failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1438:3: ( compound_operator[$base] | simple_operator[$base] | LEFT_PAREN or_restr_connective[$base] RIGHT_PAREN )", 66, 2, input);
+                        new NoViableAltException("1454:3: ( compound_operator[$base] | simple_operator[$base] | LEFT_PAREN or_restr_connective[$base] RIGHT_PAREN )", 66, 2, input);
 
                     throw nvae;
                 }
@@ -5471,12 +5540,12 @@
             case MATCHES:
             case SOUNDSLIKE:
             case MEMBEROF:
-            case 76:
             case 77:
             case 78:
             case 79:
             case 80:
             case 81:
+            case 82:
                 {
                 alt66=2;
                 }
@@ -5489,16 +5558,16 @@
             default:
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1438:3: ( compound_operator[$base] | simple_operator[$base] | LEFT_PAREN or_restr_connective[$base] RIGHT_PAREN )", 66, 0, input);
+                    new NoViableAltException("1454:3: ( compound_operator[$base] | simple_operator[$base] | LEFT_PAREN or_restr_connective[$base] RIGHT_PAREN )", 66, 0, input);
 
                 throw nvae;
             }
 
             switch (alt66) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1438:5: compound_operator[$base]
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1454:5: compound_operator[$base]
                     {
-                    pushFollow(FOLLOW_compound_operator_in_constraint_expression3835);
+                    pushFollow(FOLLOW_compound_operator_in_constraint_expression3892);
                     compound_operator(base);
                     _fsp--;
                     if (failed) return ;
@@ -5506,9 +5575,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1439:5: simple_operator[$base]
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1455:5: simple_operator[$base]
                     {
-                    pushFollow(FOLLOW_simple_operator_in_constraint_expression3842);
+                    pushFollow(FOLLOW_simple_operator_in_constraint_expression3899);
                     simple_operator(base);
                     _fsp--;
                     if (failed) return ;
@@ -5516,19 +5585,19 @@
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1440:5: LEFT_PAREN or_restr_connective[$base] RIGHT_PAREN
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1456:5: LEFT_PAREN or_restr_connective[$base] RIGHT_PAREN
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constraint_expression3849); if (failed) return ;
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constraint_expression3906); if (failed) return ;
                     if ( backtracking==0 ) {
 
                       			location.setType(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
                       		
                     }
-                    pushFollow(FOLLOW_or_restr_connective_in_constraint_expression3858);
+                    pushFollow(FOLLOW_or_restr_connective_in_constraint_expression3915);
                     or_restr_connective(base);
                     _fsp--;
                     if (failed) return ;
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constraint_expression3864); if (failed) return ;
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constraint_expression3921); if (failed) return ;
 
                     }
                     break;
@@ -5551,7 +5620,7 @@
 
 
     // $ANTLR start simple_operator
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1449:1: simple_operator[RestrictionConnectiveDescr base] : (t= '==' | t= '>' | t= '>=' | t= '<' | t= '<=' | t= '!=' | t= CONTAINS | n= NOT t= CONTAINS | t= EXCLUDES | t= MATCHES | t= SOUNDSLIKE | n= NOT t= MATCHES | t= MEMBEROF | n= NOT t= MEMBEROF ) rd= expression_value[$base, op] ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1465:1: simple_operator[RestrictionConnectiveDescr base] : (t= '==' | t= '>' | t= '>=' | t= '<' | t= '<=' | t= '!=' | t= CONTAINS | n= NOT t= CONTAINS | t= EXCLUDES | t= MATCHES | t= SOUNDSLIKE | n= NOT t= MATCHES | t= MEMBEROF | n= NOT t= MEMBEROF ) rd= expression_value[$base, op] ;
     public final void simple_operator(RestrictionConnectiveDescr base) throws RecognitionException {
         Token t=null;
         Token n=null;
@@ -5562,38 +5631,38 @@
         		String op = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1453:2: ( (t= '==' | t= '>' | t= '>=' | t= '<' | t= '<=' | t= '!=' | t= CONTAINS | n= NOT t= CONTAINS | t= EXCLUDES | t= MATCHES | t= SOUNDSLIKE | n= NOT t= MATCHES | t= MEMBEROF | n= NOT t= MEMBEROF ) rd= expression_value[$base, op] )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1454:3: (t= '==' | t= '>' | t= '>=' | t= '<' | t= '<=' | t= '!=' | t= CONTAINS | n= NOT t= CONTAINS | t= EXCLUDES | t= MATCHES | t= SOUNDSLIKE | n= NOT t= MATCHES | t= MEMBEROF | n= NOT t= MEMBEROF ) rd= expression_value[$base, op]
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1469:2: ( (t= '==' | t= '>' | t= '>=' | t= '<' | t= '<=' | t= '!=' | t= CONTAINS | n= NOT t= CONTAINS | t= EXCLUDES | t= MATCHES | t= SOUNDSLIKE | n= NOT t= MATCHES | t= MEMBEROF | n= NOT t= MEMBEROF ) rd= expression_value[$base, op] )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1470:3: (t= '==' | t= '>' | t= '>=' | t= '<' | t= '<=' | t= '!=' | t= CONTAINS | n= NOT t= CONTAINS | t= EXCLUDES | t= MATCHES | t= SOUNDSLIKE | n= NOT t= MATCHES | t= MEMBEROF | n= NOT t= MEMBEROF ) rd= expression_value[$base, op]
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1454:3: (t= '==' | t= '>' | t= '>=' | t= '<' | t= '<=' | t= '!=' | t= CONTAINS | n= NOT t= CONTAINS | t= EXCLUDES | t= MATCHES | t= SOUNDSLIKE | n= NOT t= MATCHES | t= MEMBEROF | n= NOT t= MEMBEROF )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1470:3: (t= '==' | t= '>' | t= '>=' | t= '<' | t= '<=' | t= '!=' | t= CONTAINS | n= NOT t= CONTAINS | t= EXCLUDES | t= MATCHES | t= SOUNDSLIKE | n= NOT t= MATCHES | t= MEMBEROF | n= NOT t= MEMBEROF )
             int alt67=14;
             switch ( input.LA(1) ) {
-            case 76:
+            case 77:
                 {
                 alt67=1;
                 }
                 break;
-            case 77:
+            case 78:
                 {
                 alt67=2;
                 }
                 break;
-            case 78:
+            case 79:
                 {
                 alt67=3;
                 }
                 break;
-            case 79:
+            case 80:
                 {
                 alt67=4;
                 }
                 break;
-            case 80:
+            case 81:
                 {
                 alt67=5;
                 }
                 break;
-            case 81:
+            case 82:
                 {
                 alt67=6;
                 }
@@ -5611,20 +5680,20 @@
                     alt67=12;
                     }
                     break;
-                case CONTAINS:
+                case MEMBEROF:
                     {
-                    alt67=8;
+                    alt67=14;
                     }
                     break;
-                case MEMBEROF:
+                case CONTAINS:
                     {
-                    alt67=14;
+                    alt67=8;
                     }
                     break;
                 default:
                     if (backtracking>0) {failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1454:3: (t= '==' | t= '>' | t= '>=' | t= '<' | t= '<=' | t= '!=' | t= CONTAINS | n= NOT t= CONTAINS | t= EXCLUDES | t= MATCHES | t= SOUNDSLIKE | n= NOT t= MATCHES | t= MEMBEROF | n= NOT t= MEMBEROF )", 67, 8, input);
+                        new NoViableAltException("1470:3: (t= '==' | t= '>' | t= '>=' | t= '<' | t= '<=' | t= '!=' | t= CONTAINS | n= NOT t= CONTAINS | t= EXCLUDES | t= MATCHES | t= SOUNDSLIKE | n= NOT t= MATCHES | t= MEMBEROF | n= NOT t= MEMBEROF )", 67, 8, input);
 
                     throw nvae;
                 }
@@ -5654,127 +5723,127 @@
             default:
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1454:3: (t= '==' | t= '>' | t= '>=' | t= '<' | t= '<=' | t= '!=' | t= CONTAINS | n= NOT t= CONTAINS | t= EXCLUDES | t= MATCHES | t= SOUNDSLIKE | n= NOT t= MATCHES | t= MEMBEROF | n= NOT t= MEMBEROF )", 67, 0, input);
+                    new NoViableAltException("1470:3: (t= '==' | t= '>' | t= '>=' | t= '<' | t= '<=' | t= '!=' | t= CONTAINS | n= NOT t= CONTAINS | t= EXCLUDES | t= MATCHES | t= SOUNDSLIKE | n= NOT t= MATCHES | t= MEMBEROF | n= NOT t= MEMBEROF )", 67, 0, input);
 
                 throw nvae;
             }
 
             switch (alt67) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1454:5: t= '=='
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1470:5: t= '=='
                     {
                     t=(Token)input.LT(1);
-                    match(input,76,FOLLOW_76_in_simple_operator3895); if (failed) return ;
+                    match(input,77,FOLLOW_77_in_simple_operator3952); if (failed) return ;
 
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1455:5: t= '>'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1471:5: t= '>'
                     {
                     t=(Token)input.LT(1);
-                    match(input,77,FOLLOW_77_in_simple_operator3903); if (failed) return ;
+                    match(input,78,FOLLOW_78_in_simple_operator3960); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1456:5: t= '>='
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1472:5: t= '>='
                     {
                     t=(Token)input.LT(1);
-                    match(input,78,FOLLOW_78_in_simple_operator3911); if (failed) return ;
+                    match(input,79,FOLLOW_79_in_simple_operator3968); if (failed) return ;
 
                     }
                     break;
                 case 4 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1457:5: t= '<'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1473:5: t= '<'
                     {
                     t=(Token)input.LT(1);
-                    match(input,79,FOLLOW_79_in_simple_operator3919); if (failed) return ;
+                    match(input,80,FOLLOW_80_in_simple_operator3976); if (failed) return ;
 
                     }
                     break;
                 case 5 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1458:5: t= '<='
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1474:5: t= '<='
                     {
                     t=(Token)input.LT(1);
-                    match(input,80,FOLLOW_80_in_simple_operator3927); if (failed) return ;
+                    match(input,81,FOLLOW_81_in_simple_operator3984); if (failed) return ;
 
                     }
                     break;
                 case 6 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1459:5: t= '!='
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1475:5: t= '!='
                     {
                     t=(Token)input.LT(1);
-                    match(input,81,FOLLOW_81_in_simple_operator3935); if (failed) return ;
+                    match(input,82,FOLLOW_82_in_simple_operator3992); if (failed) return ;
 
                     }
                     break;
                 case 7 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1460:5: t= CONTAINS
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1476:5: t= CONTAINS
                     {
                     t=(Token)input.LT(1);
-                    match(input,CONTAINS,FOLLOW_CONTAINS_in_simple_operator3943); if (failed) return ;
+                    match(input,CONTAINS,FOLLOW_CONTAINS_in_simple_operator4000); if (failed) return ;
 
                     }
                     break;
                 case 8 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1461:5: n= NOT t= CONTAINS
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1477:5: n= NOT t= CONTAINS
                     {
                     n=(Token)input.LT(1);
-                    match(input,NOT,FOLLOW_NOT_in_simple_operator3951); if (failed) return ;
+                    match(input,NOT,FOLLOW_NOT_in_simple_operator4008); if (failed) return ;
                     t=(Token)input.LT(1);
-                    match(input,CONTAINS,FOLLOW_CONTAINS_in_simple_operator3955); if (failed) return ;
+                    match(input,CONTAINS,FOLLOW_CONTAINS_in_simple_operator4012); if (failed) return ;
 
                     }
                     break;
                 case 9 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1462:5: t= EXCLUDES
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1478:5: t= EXCLUDES
                     {
                     t=(Token)input.LT(1);
-                    match(input,EXCLUDES,FOLLOW_EXCLUDES_in_simple_operator3963); if (failed) return ;
+                    match(input,EXCLUDES,FOLLOW_EXCLUDES_in_simple_operator4020); if (failed) return ;
 
                     }
                     break;
                 case 10 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1463:5: t= MATCHES
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1479:5: t= MATCHES
                     {
                     t=(Token)input.LT(1);
-                    match(input,MATCHES,FOLLOW_MATCHES_in_simple_operator3971); if (failed) return ;
+                    match(input,MATCHES,FOLLOW_MATCHES_in_simple_operator4028); if (failed) return ;
 
                     }
                     break;
                 case 11 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1464:5: t= SOUNDSLIKE
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1480:5: t= SOUNDSLIKE
                     {
                     t=(Token)input.LT(1);
-                    match(input,SOUNDSLIKE,FOLLOW_SOUNDSLIKE_in_simple_operator3979); if (failed) return ;
+                    match(input,SOUNDSLIKE,FOLLOW_SOUNDSLIKE_in_simple_operator4036); if (failed) return ;
 
                     }
                     break;
                 case 12 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1465:5: n= NOT t= MATCHES
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1481:5: n= NOT t= MATCHES
                     {
                     n=(Token)input.LT(1);
-                    match(input,NOT,FOLLOW_NOT_in_simple_operator3987); if (failed) return ;
+                    match(input,NOT,FOLLOW_NOT_in_simple_operator4044); if (failed) return ;
                     t=(Token)input.LT(1);
-                    match(input,MATCHES,FOLLOW_MATCHES_in_simple_operator3991); if (failed) return ;
+                    match(input,MATCHES,FOLLOW_MATCHES_in_simple_operator4048); if (failed) return ;
 
                     }
                     break;
                 case 13 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1466:5: t= MEMBEROF
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1482:5: t= MEMBEROF
                     {
                     t=(Token)input.LT(1);
-                    match(input,MEMBEROF,FOLLOW_MEMBEROF_in_simple_operator3999); if (failed) return ;
+                    match(input,MEMBEROF,FOLLOW_MEMBEROF_in_simple_operator4056); if (failed) return ;
 
                     }
                     break;
                 case 14 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1467:5: n= NOT t= MEMBEROF
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1483:5: n= NOT t= MEMBEROF
                     {
                     n=(Token)input.LT(1);
-                    match(input,NOT,FOLLOW_NOT_in_simple_operator4007); if (failed) return ;
+                    match(input,NOT,FOLLOW_NOT_in_simple_operator4064); if (failed) return ;
                     t=(Token)input.LT(1);
-                    match(input,MEMBEROF,FOLLOW_MEMBEROF_in_simple_operator4011); if (failed) return ;
+                    match(input,MEMBEROF,FOLLOW_MEMBEROF_in_simple_operator4068); if (failed) return ;
 
                     }
                     break;
@@ -5792,7 +5861,7 @@
               		    }
               		
             }
-            pushFollow(FOLLOW_expression_value_in_simple_operator4025);
+            pushFollow(FOLLOW_expression_value_in_simple_operator4082);
             rd=expression_value(base,  op);
             _fsp--;
             if (failed) return ;
@@ -5817,7 +5886,7 @@
 
 
     // $ANTLR start compound_operator
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1486:1: compound_operator[RestrictionConnectiveDescr base] : ( IN | NOT IN ) LEFT_PAREN rd= expression_value[group, op] ( COMMA rd= expression_value[group, op] )* RIGHT_PAREN ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1502:1: compound_operator[RestrictionConnectiveDescr base] : ( IN | NOT IN ) LEFT_PAREN rd= expression_value[group, op] ( COMMA rd= expression_value[group, op] )* RIGHT_PAREN ;
     public final void compound_operator(RestrictionConnectiveDescr base) throws RecognitionException {
         RestrictionDescr rd = null;
 
@@ -5827,10 +5896,10 @@
         		RestrictionConnectiveDescr group = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1491:2: ( ( IN | NOT IN ) LEFT_PAREN rd= expression_value[group, op] ( COMMA rd= expression_value[group, op] )* RIGHT_PAREN )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1492:3: ( IN | NOT IN ) LEFT_PAREN rd= expression_value[group, op] ( COMMA rd= expression_value[group, op] )* RIGHT_PAREN
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1507:2: ( ( IN | NOT IN ) LEFT_PAREN rd= expression_value[group, op] ( COMMA rd= expression_value[group, op] )* RIGHT_PAREN )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1508:3: ( IN | NOT IN ) LEFT_PAREN rd= expression_value[group, op] ( COMMA rd= expression_value[group, op] )* RIGHT_PAREN
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1492:3: ( IN | NOT IN )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1508:3: ( IN | NOT IN )
             int alt68=2;
             int LA68_0 = input.LA(1);
 
@@ -5843,15 +5912,15 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1492:3: ( IN | NOT IN )", 68, 0, input);
+                    new NoViableAltException("1508:3: ( IN | NOT IN )", 68, 0, input);
 
                 throw nvae;
             }
             switch (alt68) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1492:5: IN
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1508:5: IN
                     {
-                    match(input,IN,FOLLOW_IN_in_compound_operator4055); if (failed) return ;
+                    match(input,IN,FOLLOW_IN_in_compound_operator4112); if (failed) return ;
                     if ( backtracking==0 ) {
 
                       			  op = "==";
@@ -5865,10 +5934,10 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1500:5: NOT IN
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1516:5: NOT IN
                     {
-                    match(input,NOT,FOLLOW_NOT_in_compound_operator4067); if (failed) return ;
-                    match(input,IN,FOLLOW_IN_in_compound_operator4069); if (failed) return ;
+                    match(input,NOT,FOLLOW_NOT_in_compound_operator4124); if (failed) return ;
+                    match(input,IN,FOLLOW_IN_in_compound_operator4126); if (failed) return ;
                     if ( backtracking==0 ) {
 
                       			  op = "!=";
@@ -5884,12 +5953,12 @@
 
             }
 
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_compound_operator4084); if (failed) return ;
-            pushFollow(FOLLOW_expression_value_in_compound_operator4088);
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_compound_operator4141); if (failed) return ;
+            pushFollow(FOLLOW_expression_value_in_compound_operator4145);
             rd=expression_value(group,  op);
             _fsp--;
             if (failed) return ;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1510:3: ( COMMA rd= expression_value[group, op] )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1526:3: ( COMMA rd= expression_value[group, op] )*
             loop69:
             do {
                 int alt69=2;
@@ -5902,10 +5971,10 @@
 
                 switch (alt69) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1510:5: COMMA rd= expression_value[group, op]
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1526:5: COMMA rd= expression_value[group, op]
             	    {
-            	    match(input,COMMA,FOLLOW_COMMA_in_compound_operator4095); if (failed) return ;
-            	    pushFollow(FOLLOW_expression_value_in_compound_operator4099);
+            	    match(input,COMMA,FOLLOW_COMMA_in_compound_operator4152); if (failed) return ;
+            	    pushFollow(FOLLOW_expression_value_in_compound_operator4156);
             	    rd=expression_value(group,  op);
             	    _fsp--;
             	    if (failed) return ;
@@ -5918,7 +5987,7 @@
                 }
             } while (true);
 
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_compound_operator4108); if (failed) return ;
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_compound_operator4165); if (failed) return ;
             if ( backtracking==0 ) {
 
               			location.setType(Location.LOCATION_LHS_INSIDE_CONDITION_END);
@@ -5940,7 +6009,7 @@
 
 
     // $ANTLR start expression_value
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1517:1: expression_value[RestrictionConnectiveDescr base, String op] returns [RestrictionDescr rd] : (ap= accessor_path | lc= literal_constraint | rvc= paren_chunk ) ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1533:1: expression_value[RestrictionConnectiveDescr base, String op] returns [RestrictionDescr rd] : (ap= accessor_path | lc= literal_constraint | rvc= paren_chunk ) ;
     public final RestrictionDescr expression_value(RestrictionConnectiveDescr base, String op) throws RecognitionException {
         RestrictionDescr rd = null;
 
@@ -5955,15 +6024,16 @@
         		rd = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1521:2: ( (ap= accessor_path | lc= literal_constraint | rvc= paren_chunk ) )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1522:3: (ap= accessor_path | lc= literal_constraint | rvc= paren_chunk )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1537:2: ( (ap= accessor_path | lc= literal_constraint | rvc= paren_chunk ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1538:3: (ap= accessor_path | lc= literal_constraint | rvc= paren_chunk )
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1522:3: (ap= accessor_path | lc= literal_constraint | rvc= paren_chunk )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1538:3: (ap= accessor_path | lc= literal_constraint | rvc= paren_chunk )
             int alt70=3;
             switch ( input.LA(1) ) {
             case PACKAGE:
             case IMPORT:
             case FUNCTION:
+            case EVENT:
             case ID:
             case GLOBAL:
             case QUERY:
@@ -6009,16 +6079,16 @@
             default:
                 if (backtracking>0) {failed=true; return rd;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1522:3: (ap= accessor_path | lc= literal_constraint | rvc= paren_chunk )", 70, 0, input);
+                    new NoViableAltException("1538:3: (ap= accessor_path | lc= literal_constraint | rvc= paren_chunk )", 70, 0, input);
 
                 throw nvae;
             }
 
             switch (alt70) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1522:5: ap= accessor_path
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1538:5: ap= accessor_path
                     {
-                    pushFollow(FOLLOW_accessor_path_in_expression_value4142);
+                    pushFollow(FOLLOW_accessor_path_in_expression_value4199);
                     ap=accessor_path();
                     _fsp--;
                     if (failed) return rd;
@@ -6035,9 +6105,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1530:5: lc= literal_constraint
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1546:5: lc= literal_constraint
                     {
-                    pushFollow(FOLLOW_literal_constraint_in_expression_value4162);
+                    pushFollow(FOLLOW_literal_constraint_in_expression_value4219);
                     lc=literal_constraint();
                     _fsp--;
                     if (failed) return rd;
@@ -6050,9 +6120,9 @@
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1534:5: rvc= paren_chunk
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1550:5: rvc= paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_expression_value4176);
+                    pushFollow(FOLLOW_paren_chunk_in_expression_value4233);
                     rvc=paren_chunk();
                     _fsp--;
                     if (failed) return rd;
@@ -6095,7 +6165,7 @@
     };
 
     // $ANTLR start literal_constraint
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1547:1: literal_constraint returns [String text, int type] : (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL ) ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1563:1: literal_constraint returns [String text, int type] : (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL ) ;
     public final literal_constraint_return literal_constraint() throws RecognitionException {
         literal_constraint_return retval = new literal_constraint_return();
         retval.start = input.LT(1);
@@ -6106,10 +6176,10 @@
         		retval.text = null;
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1551:2: ( (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL ) )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1551:4: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1567:2: ( (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1567:4: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL )
             {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1551:4: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1567:4: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL )
             int alt71=5;
             switch ( input.LA(1) ) {
             case STRING:
@@ -6140,17 +6210,17 @@
             default:
                 if (backtracking>0) {failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1551:4: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL )", 71, 0, input);
+                    new NoViableAltException("1567:4: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL )", 71, 0, input);
 
                 throw nvae;
             }
 
             switch (alt71) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1551:6: t= STRING
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1567:6: t= STRING
                     {
                     t=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_literal_constraint4219); if (failed) return retval;
+                    match(input,STRING,FOLLOW_STRING_in_literal_constraint4276); if (failed) return retval;
                     if ( backtracking==0 ) {
                        retval.text = getString( t.getText() ); retval.type = LiteralRestrictionDescr.TYPE_STRING; 
                     }
@@ -6158,10 +6228,10 @@
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1552:5: t= INT
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1568:5: t= INT
                     {
                     t=(Token)input.LT(1);
-                    match(input,INT,FOLLOW_INT_in_literal_constraint4230); if (failed) return retval;
+                    match(input,INT,FOLLOW_INT_in_literal_constraint4287); if (failed) return retval;
                     if ( backtracking==0 ) {
                        retval.text = t.getText(); retval.type = LiteralRestrictionDescr.TYPE_NUMBER; 
                     }
@@ -6169,10 +6239,10 @@
                     }
                     break;
                 case 3 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1553:5: t= FLOAT
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1569:5: t= FLOAT
                     {
                     t=(Token)input.LT(1);
-                    match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint4243); if (failed) return retval;
+                    match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint4300); if (failed) return retval;
                     if ( backtracking==0 ) {
                        retval.text = t.getText(); retval.type = LiteralRestrictionDescr.TYPE_NUMBER; 
                     }
@@ -6180,10 +6250,10 @@
                     }
                     break;
                 case 4 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1554:5: t= BOOL
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1570:5: t= BOOL
                     {
                     t=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_literal_constraint4254); if (failed) return retval;
+                    match(input,BOOL,FOLLOW_BOOL_in_literal_constraint4311); if (failed) return retval;
                     if ( backtracking==0 ) {
                        retval.text = t.getText(); retval.type = LiteralRestrictionDescr.TYPE_BOOLEAN; 
                     }
@@ -6191,10 +6261,10 @@
                     }
                     break;
                 case 5 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1555:5: t= NULL
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1571:5: t= NULL
                     {
                     t=(Token)input.LT(1);
-                    match(input,NULL,FOLLOW_NULL_in_literal_constraint4266); if (failed) return retval;
+                    match(input,NULL,FOLLOW_NULL_in_literal_constraint4323); if (failed) return retval;
                     if ( backtracking==0 ) {
                        retval.text = null; retval.type = LiteralRestrictionDescr.TYPE_NULL; 
                     }
@@ -6222,7 +6292,7 @@
 
 
     // $ANTLR start predicate
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1559:1: predicate[ConditionalElementDescr base] : text= paren_chunk ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1575:1: predicate[ConditionalElementDescr base] : text= paren_chunk ;
     public final void predicate(ConditionalElementDescr base) throws RecognitionException {
         paren_chunk_return text = null;
 
@@ -6231,10 +6301,10 @@
         		PredicateDescr d = null;
                 
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1563:2: (text= paren_chunk )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1564:3: text= paren_chunk
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1579:2: (text= paren_chunk )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1580:3: text= paren_chunk
             {
-            pushFollow(FOLLOW_paren_chunk_in_predicate4304);
+            pushFollow(FOLLOW_paren_chunk_in_predicate4361);
             text=paren_chunk();
             _fsp--;
             if (failed) return ;
@@ -6266,23 +6336,23 @@
     };
 
     // $ANTLR start curly_chunk
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1576:1: curly_chunk : LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk )* RIGHT_CURLY ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1592:1: curly_chunk : LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk )* RIGHT_CURLY ;
     public final curly_chunk_return curly_chunk() throws RecognitionException {
         curly_chunk_return retval = new curly_chunk_return();
         retval.start = input.LT(1);
 
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1577:2: ( LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk )* RIGHT_CURLY )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1578:3: LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk )* RIGHT_CURLY
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1593:2: ( LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk )* RIGHT_CURLY )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1594:3: LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk )* RIGHT_CURLY
             {
-            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk4322); if (failed) return retval;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1578:14: (~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk )*
+            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk4379); if (failed) return retval;
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1594:14: (~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk )*
             loop72:
             do {
                 int alt72=3;
                 int LA72_0 = input.LA(1);
 
-                if ( ((LA72_0>=PACKAGE && LA72_0<=NULL)||(LA72_0>=LEFT_SQUARE && LA72_0<=81)) ) {
+                if ( ((LA72_0>=PACKAGE && LA72_0<=NULL)||(LA72_0>=LEFT_SQUARE && LA72_0<=82)) ) {
                     alt72=1;
                 }
                 else if ( (LA72_0==LEFT_CURLY) ) {
@@ -6292,9 +6362,9 @@
 
                 switch (alt72) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1578:16: ~ ( LEFT_CURLY | RIGHT_CURLY )
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1594:16: ~ ( LEFT_CURLY | RIGHT_CURLY )
             	    {
-            	    if ( (input.LA(1)>=PACKAGE && input.LA(1)<=NULL)||(input.LA(1)>=LEFT_SQUARE && input.LA(1)<=81) ) {
+            	    if ( (input.LA(1)>=PACKAGE && input.LA(1)<=NULL)||(input.LA(1)>=LEFT_SQUARE && input.LA(1)<=82) ) {
             	        input.consume();
             	        errorRecovery=false;failed=false;
             	    }
@@ -6302,16 +6372,16 @@
             	        if (backtracking>0) {failed=true; return retval;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_curly_chunk4326);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_curly_chunk4383);    throw mse;
             	    }
 
 
             	    }
             	    break;
             	case 2 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1578:44: curly_chunk
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1594:44: curly_chunk
             	    {
-            	    pushFollow(FOLLOW_curly_chunk_in_curly_chunk4335);
+            	    pushFollow(FOLLOW_curly_chunk_in_curly_chunk4392);
             	    curly_chunk();
             	    _fsp--;
             	    if (failed) return retval;
@@ -6324,7 +6394,7 @@
                 }
             } while (true);
 
-            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk4340); if (failed) return retval;
+            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk4397); if (failed) return retval;
 
             }
 
@@ -6345,23 +6415,23 @@
     };
 
     // $ANTLR start paren_chunk
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1581:1: paren_chunk : LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk )* RIGHT_PAREN ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1597:1: paren_chunk : LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk )* RIGHT_PAREN ;
     public final paren_chunk_return paren_chunk() throws RecognitionException {
         paren_chunk_return retval = new paren_chunk_return();
         retval.start = input.LT(1);
 
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1582:2: ( LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk )* RIGHT_PAREN )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1583:3: LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk )* RIGHT_PAREN
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1598:2: ( LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk )* RIGHT_PAREN )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1599:3: LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk )* RIGHT_PAREN
             {
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk4354); if (failed) return retval;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1583:14: (~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk )*
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk4411); if (failed) return retval;
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1599:14: (~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk )*
             loop73:
             do {
                 int alt73=3;
                 int LA73_0 = input.LA(1);
 
-                if ( ((LA73_0>=PACKAGE && LA73_0<=GLOBAL)||LA73_0==COMMA||(LA73_0>=QUERY && LA73_0<=81)) ) {
+                if ( ((LA73_0>=PACKAGE && LA73_0<=GLOBAL)||LA73_0==COMMA||(LA73_0>=QUERY && LA73_0<=82)) ) {
                     alt73=1;
                 }
                 else if ( (LA73_0==LEFT_PAREN) ) {
@@ -6371,9 +6441,9 @@
 
                 switch (alt73) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1583:16: ~ ( LEFT_PAREN | RIGHT_PAREN )
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1599:16: ~ ( LEFT_PAREN | RIGHT_PAREN )
             	    {
-            	    if ( (input.LA(1)>=PACKAGE && input.LA(1)<=GLOBAL)||input.LA(1)==COMMA||(input.LA(1)>=QUERY && input.LA(1)<=81) ) {
+            	    if ( (input.LA(1)>=PACKAGE && input.LA(1)<=GLOBAL)||input.LA(1)==COMMA||(input.LA(1)>=QUERY && input.LA(1)<=82) ) {
             	        input.consume();
             	        errorRecovery=false;failed=false;
             	    }
@@ -6381,16 +6451,16 @@
             	        if (backtracking>0) {failed=true; return retval;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_paren_chunk4358);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_paren_chunk4415);    throw mse;
             	    }
 
 
             	    }
             	    break;
             	case 2 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1583:44: paren_chunk
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1599:44: paren_chunk
             	    {
-            	    pushFollow(FOLLOW_paren_chunk_in_paren_chunk4367);
+            	    pushFollow(FOLLOW_paren_chunk_in_paren_chunk4424);
             	    paren_chunk();
             	    _fsp--;
             	    if (failed) return retval;
@@ -6403,7 +6473,7 @@
                 }
             } while (true);
 
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk4372); if (failed) return retval;
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk4429); if (failed) return retval;
 
             }
 
@@ -6424,23 +6494,23 @@
     };
 
     // $ANTLR start square_chunk
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1586:1: square_chunk : LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk )* RIGHT_SQUARE ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1602:1: square_chunk : LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk )* RIGHT_SQUARE ;
     public final square_chunk_return square_chunk() throws RecognitionException {
         square_chunk_return retval = new square_chunk_return();
         retval.start = input.LT(1);
 
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1587:2: ( LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk )* RIGHT_SQUARE )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1588:3: LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk )* RIGHT_SQUARE
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1603:2: ( LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk )* RIGHT_SQUARE )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1604:3: LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk )* RIGHT_SQUARE
             {
-            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk4385); if (failed) return retval;
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1588:15: (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk )*
+            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk4442); if (failed) return retval;
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1604:15: (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk )*
             loop74:
             do {
                 int alt74=3;
                 int LA74_0 = input.LA(1);
 
-                if ( ((LA74_0>=PACKAGE && LA74_0<=RIGHT_CURLY)||(LA74_0>=THEN && LA74_0<=81)) ) {
+                if ( ((LA74_0>=PACKAGE && LA74_0<=RIGHT_CURLY)||(LA74_0>=THEN && LA74_0<=82)) ) {
                     alt74=1;
                 }
                 else if ( (LA74_0==LEFT_SQUARE) ) {
@@ -6450,9 +6520,9 @@
 
                 switch (alt74) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1588:17: ~ ( LEFT_SQUARE | RIGHT_SQUARE )
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1604:17: ~ ( LEFT_SQUARE | RIGHT_SQUARE )
             	    {
-            	    if ( (input.LA(1)>=PACKAGE && input.LA(1)<=RIGHT_CURLY)||(input.LA(1)>=THEN && input.LA(1)<=81) ) {
+            	    if ( (input.LA(1)>=PACKAGE && input.LA(1)<=RIGHT_CURLY)||(input.LA(1)>=THEN && input.LA(1)<=82) ) {
             	        input.consume();
             	        errorRecovery=false;failed=false;
             	    }
@@ -6460,16 +6530,16 @@
             	        if (backtracking>0) {failed=true; return retval;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_square_chunk4389);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_square_chunk4446);    throw mse;
             	    }
 
 
             	    }
             	    break;
             	case 2 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1588:47: square_chunk
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1604:47: square_chunk
             	    {
-            	    pushFollow(FOLLOW_square_chunk_in_square_chunk4398);
+            	    pushFollow(FOLLOW_square_chunk_in_square_chunk4455);
             	    square_chunk();
             	    _fsp--;
             	    if (failed) return retval;
@@ -6482,7 +6552,7 @@
                 }
             } while (true);
 
-            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk4403); if (failed) return retval;
+            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk4460); if (failed) return retval;
 
             }
 
@@ -6504,28 +6574,28 @@
     };
 
     // $ANTLR start qualified_id
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1591:1: qualified_id returns [ String text ] : ID ( DOT identifier )* ( LEFT_SQUARE RIGHT_SQUARE )* ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1607:1: qualified_id returns [ String text ] : ID ( DOT identifier )* ( LEFT_SQUARE RIGHT_SQUARE )* ;
     public final qualified_id_return qualified_id() throws RecognitionException {
         qualified_id_return retval = new qualified_id_return();
         retval.start = input.LT(1);
 
-        Token ID52=null;
-        identifier_return identifier53 = null;
+        Token ID53=null;
+        identifier_return identifier54 = null;
 
 
 
         	        StringBuffer buf = new StringBuffer();
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1598:2: ( ID ( DOT identifier )* ( LEFT_SQUARE RIGHT_SQUARE )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1598:5: ID ( DOT identifier )* ( LEFT_SQUARE RIGHT_SQUARE )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1614:2: ( ID ( DOT identifier )* ( LEFT_SQUARE RIGHT_SQUARE )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1614:5: ID ( DOT identifier )* ( LEFT_SQUARE RIGHT_SQUARE )*
             {
-            ID52=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_qualified_id4432); if (failed) return retval;
+            ID53=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_qualified_id4489); if (failed) return retval;
             if ( backtracking==0 ) {
-              buf.append(ID52.getText());
+              buf.append(ID53.getText());
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1598:32: ( DOT identifier )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1614:32: ( DOT identifier )*
             loop75:
             do {
                 int alt75=2;
@@ -6538,15 +6608,15 @@
 
                 switch (alt75) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1598:34: DOT identifier
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1614:34: DOT identifier
             	    {
-            	    match(input,DOT,FOLLOW_DOT_in_qualified_id4438); if (failed) return retval;
-            	    pushFollow(FOLLOW_identifier_in_qualified_id4440);
-            	    identifier53=identifier();
+            	    match(input,DOT,FOLLOW_DOT_in_qualified_id4495); if (failed) return retval;
+            	    pushFollow(FOLLOW_identifier_in_qualified_id4497);
+            	    identifier54=identifier();
             	    _fsp--;
             	    if (failed) return retval;
             	    if ( backtracking==0 ) {
-            	      buf.append("."+input.toString(identifier53.start,identifier53.stop));
+            	      buf.append("."+input.toString(identifier54.start,identifier54.stop));
             	    }
 
             	    }
@@ -6557,7 +6627,7 @@
                 }
             } while (true);
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1598:88: ( LEFT_SQUARE RIGHT_SQUARE )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1614:88: ( LEFT_SQUARE RIGHT_SQUARE )*
             loop76:
             do {
                 int alt76=2;
@@ -6570,10 +6640,10 @@
 
                 switch (alt76) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1598:90: LEFT_SQUARE RIGHT_SQUARE
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1614:90: LEFT_SQUARE RIGHT_SQUARE
             	    {
-            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_qualified_id4449); if (failed) return retval;
-            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_qualified_id4451); if (failed) return retval;
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_qualified_id4506); if (failed) return retval;
+            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_qualified_id4508); if (failed) return retval;
             	    if ( backtracking==0 ) {
             	      buf.append("[]");
             	    }
@@ -6609,7 +6679,7 @@
 
 
     // $ANTLR start dotted_name
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1601:1: dotted_name returns [ String text ] : i= identifier ( DOT i= identifier )* ( LEFT_SQUARE RIGHT_SQUARE )* ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1617:1: dotted_name returns [ String text ] : i= identifier ( DOT i= identifier )* ( LEFT_SQUARE RIGHT_SQUARE )* ;
     public final String dotted_name() throws RecognitionException {
         String text = null;
 
@@ -6620,17 +6690,17 @@
         	        StringBuffer buf = new StringBuffer();
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1608:2: (i= identifier ( DOT i= identifier )* ( LEFT_SQUARE RIGHT_SQUARE )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1608:4: i= identifier ( DOT i= identifier )* ( LEFT_SQUARE RIGHT_SQUARE )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1624:2: (i= identifier ( DOT i= identifier )* ( LEFT_SQUARE RIGHT_SQUARE )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1624:4: i= identifier ( DOT i= identifier )* ( LEFT_SQUARE RIGHT_SQUARE )*
             {
-            pushFollow(FOLLOW_identifier_in_dotted_name4485);
+            pushFollow(FOLLOW_identifier_in_dotted_name4542);
             i=identifier();
             _fsp--;
             if (failed) return text;
             if ( backtracking==0 ) {
               buf.append(input.toString(i.start,i.stop));
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1608:40: ( DOT i= identifier )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1624:40: ( DOT i= identifier )*
             loop77:
             do {
                 int alt77=2;
@@ -6643,10 +6713,10 @@
 
                 switch (alt77) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1608:42: DOT i= identifier
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1624:42: DOT i= identifier
             	    {
-            	    match(input,DOT,FOLLOW_DOT_in_dotted_name4491); if (failed) return text;
-            	    pushFollow(FOLLOW_identifier_in_dotted_name4495);
+            	    match(input,DOT,FOLLOW_DOT_in_dotted_name4548); if (failed) return text;
+            	    pushFollow(FOLLOW_identifier_in_dotted_name4552);
             	    i=identifier();
             	    _fsp--;
             	    if (failed) return text;
@@ -6662,7 +6732,7 @@
                 }
             } while (true);
 
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1608:89: ( LEFT_SQUARE RIGHT_SQUARE )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1624:89: ( LEFT_SQUARE RIGHT_SQUARE )*
             loop78:
             do {
                 int alt78=2;
@@ -6675,10 +6745,10 @@
 
                 switch (alt78) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1608:91: LEFT_SQUARE RIGHT_SQUARE
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1624:91: LEFT_SQUARE RIGHT_SQUARE
             	    {
-            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dotted_name4504); if (failed) return text;
-            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dotted_name4506); if (failed) return text;
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dotted_name4561); if (failed) return text;
+            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dotted_name4563); if (failed) return text;
             	    if ( backtracking==0 ) {
             	      buf.append("[]");
             	    }
@@ -6715,7 +6785,7 @@
     };
 
     // $ANTLR start accessor_path
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1611:1: accessor_path returns [ String text ] : a= accessor_element ( DOT a= accessor_element )* ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1627:1: accessor_path returns [ String text ] : a= accessor_element ( DOT a= accessor_element )* ;
     public final accessor_path_return accessor_path() throws RecognitionException {
         accessor_path_return retval = new accessor_path_return();
         retval.start = input.LT(1);
@@ -6727,17 +6797,17 @@
         	        StringBuffer buf = new StringBuffer();
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1618:2: (a= accessor_element ( DOT a= accessor_element )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1618:4: a= accessor_element ( DOT a= accessor_element )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1634:2: (a= accessor_element ( DOT a= accessor_element )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1634:4: a= accessor_element ( DOT a= accessor_element )*
             {
-            pushFollow(FOLLOW_accessor_element_in_accessor_path4540);
+            pushFollow(FOLLOW_accessor_element_in_accessor_path4597);
             a=accessor_element();
             _fsp--;
             if (failed) return retval;
             if ( backtracking==0 ) {
               buf.append(a);
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1618:46: ( DOT a= accessor_element )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1634:46: ( DOT a= accessor_element )*
             loop79:
             do {
                 int alt79=2;
@@ -6750,10 +6820,10 @@
 
                 switch (alt79) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1618:48: DOT a= accessor_element
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1634:48: DOT a= accessor_element
             	    {
-            	    match(input,DOT,FOLLOW_DOT_in_accessor_path4546); if (failed) return retval;
-            	    pushFollow(FOLLOW_accessor_element_in_accessor_path4550);
+            	    match(input,DOT,FOLLOW_DOT_in_accessor_path4603); if (failed) return retval;
+            	    pushFollow(FOLLOW_accessor_element_in_accessor_path4607);
             	    a=accessor_element();
             	    _fsp--;
             	    if (failed) return retval;
@@ -6792,7 +6862,7 @@
 
 
     // $ANTLR start accessor_element
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1621:1: accessor_element returns [ String text ] : i= identifier (s= square_chunk )* ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1637:1: accessor_element returns [ String text ] : i= identifier (s= square_chunk )* ;
     public final String accessor_element() throws RecognitionException {
         String text = null;
 
@@ -6805,17 +6875,17 @@
         	        StringBuffer buf = new StringBuffer();
         	
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1628:2: (i= identifier (s= square_chunk )* )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1629:3: i= identifier (s= square_chunk )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1644:2: (i= identifier (s= square_chunk )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1645:3: i= identifier (s= square_chunk )*
             {
-            pushFollow(FOLLOW_identifier_in_accessor_element4588);
+            pushFollow(FOLLOW_identifier_in_accessor_element4645);
             i=identifier();
             _fsp--;
             if (failed) return text;
             if ( backtracking==0 ) {
               buf.append(input.toString(i.start,i.stop));
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1629:39: (s= square_chunk )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1645:39: (s= square_chunk )*
             loop80:
             do {
                 int alt80=2;
@@ -6828,9 +6898,9 @@
 
                 switch (alt80) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1629:40: s= square_chunk
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1645:40: s= square_chunk
             	    {
-            	    pushFollow(FOLLOW_square_chunk_in_accessor_element4595);
+            	    pushFollow(FOLLOW_square_chunk_in_accessor_element4652);
             	    s=square_chunk();
             	    _fsp--;
             	    if (failed) return text;
@@ -6867,36 +6937,36 @@
 
 
     // $ANTLR start rhs_chunk
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1632:1: rhs_chunk[RuleDescr rule] : THEN (~ END )* loc= END opt_semicolon ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1648:1: rhs_chunk[RuleDescr rule] : THEN (~ END )* loc= END opt_semicolon ;
     public final void rhs_chunk(RuleDescr rule) throws RecognitionException {
         Token loc=null;
-        Token THEN54=null;
+        Token THEN55=null;
 
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1633:2: ( THEN (~ END )* loc= END opt_semicolon )
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1634:3: THEN (~ END )* loc= END opt_semicolon
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1649:2: ( THEN (~ END )* loc= END opt_semicolon )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1650:3: THEN (~ END )* loc= END opt_semicolon
             {
-            THEN54=(Token)input.LT(1);
-            match(input,THEN,FOLLOW_THEN_in_rhs_chunk4616); if (failed) return ;
+            THEN55=(Token)input.LT(1);
+            match(input,THEN,FOLLOW_THEN_in_rhs_chunk4673); if (failed) return ;
             if ( backtracking==0 ) {
                location.setType( Location.LOCATION_RHS ); 
             }
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1635:3: (~ END )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1651:3: (~ END )*
             loop81:
             do {
                 int alt81=2;
                 int LA81_0 = input.LA(1);
 
-                if ( ((LA81_0>=PACKAGE && LA81_0<=QUERY)||(LA81_0>=TEMPLATE && LA81_0<=81)) ) {
+                if ( ((LA81_0>=PACKAGE && LA81_0<=QUERY)||(LA81_0>=TEMPLATE && LA81_0<=82)) ) {
                     alt81=1;
                 }
 
 
                 switch (alt81) {
             	case 1 :
-            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1635:5: ~ END
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1651:5: ~ END
             	    {
-            	    if ( (input.LA(1)>=PACKAGE && input.LA(1)<=QUERY)||(input.LA(1)>=TEMPLATE && input.LA(1)<=81) ) {
+            	    if ( (input.LA(1)>=PACKAGE && input.LA(1)<=QUERY)||(input.LA(1)>=TEMPLATE && input.LA(1)<=82) ) {
             	        input.consume();
             	        errorRecovery=false;failed=false;
             	    }
@@ -6904,7 +6974,7 @@
             	        if (backtracking>0) {failed=true; return ;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_rhs_chunk4624);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_rhs_chunk4681);    throw mse;
             	    }
 
 
@@ -6917,15 +6987,15 @@
             } while (true);
 
             loc=(Token)input.LT(1);
-            match(input,END,FOLLOW_END_in_rhs_chunk4648); if (failed) return ;
-            pushFollow(FOLLOW_opt_semicolon_in_rhs_chunk4650);
+            match(input,END,FOLLOW_END_in_rhs_chunk4705); if (failed) return ;
+            pushFollow(FOLLOW_opt_semicolon_in_rhs_chunk4707);
             opt_semicolon();
             _fsp--;
             if (failed) return ;
             if ( backtracking==0 ) {
 
                                   // ignoring first line in the consequence
-                                  String buf = input.toString( THEN54, loc );
+                                  String buf = input.toString( THEN55, loc );
                                   // removing final END keyword
                                   buf = safeSubstring( buf, 0, buf.length()-3 );
                                   if( buf.indexOf( '\n' ) > -1 ) {
@@ -6934,7 +7004,7 @@
                                       buf = buf.substring( buf.indexOf( '\r' ) + 1 );
                                   }
               		    rule.setConsequence( buf );
-                   		    rule.setConsequenceLocation(offset(THEN54.getLine()), THEN54.getCharPositionInLine());
+                   		    rule.setConsequenceLocation(offset(THEN55.getLine()), THEN55.getCharPositionInLine());
                		    rule.setEndCharacter( ((CommonToken)loc).getStopIndex() );
                		    location.setProperty( Location.LOCATION_RHS_CONTENT, rule.getConsequence() );
                               
@@ -6955,15 +7025,15 @@
 
 
     // $ANTLR start name
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1654:1: name returns [String name] : ( ID | STRING );
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1670:1: name returns [String name] : ( ID | STRING );
     public final String name() throws RecognitionException {
         String name = null;
 
-        Token ID55=null;
-        Token STRING56=null;
+        Token ID56=null;
+        Token STRING57=null;
 
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1655:2: ( ID | STRING )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1671:2: ( ID | STRING )
             int alt82=2;
             int LA82_0 = input.LA(1);
 
@@ -6976,29 +7046,29 @@
             else {
                 if (backtracking>0) {failed=true; return name;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1654:1: name returns [String name] : ( ID | STRING );", 82, 0, input);
+                    new NoViableAltException("1670:1: name returns [String name] : ( ID | STRING );", 82, 0, input);
 
                 throw nvae;
             }
             switch (alt82) {
                 case 1 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1655:5: ID
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1671:5: ID
                     {
-                    ID55=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_name4684); if (failed) return name;
+                    ID56=(Token)input.LT(1);
+                    match(input,ID,FOLLOW_ID_in_name4741); if (failed) return name;
                     if ( backtracking==0 ) {
-                       name = ID55.getText(); 
+                       name = ID56.getText(); 
                     }
 
                     }
                     break;
                 case 2 :
-                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1656:5: STRING
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1672:5: STRING
                     {
-                    STRING56=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_name4692); if (failed) return name;
+                    STRING57=(Token)input.LT(1);
+                    match(input,STRING,FOLLOW_STRING_in_name4749); if (failed) return name;
                     if ( backtracking==0 ) {
-                       name = getString( STRING56.getText() ); 
+                       name = getString( STRING57.getText() ); 
                     }
 
                     }
@@ -7020,13 +7090,13 @@
     };
 
     // $ANTLR start identifier
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1659:1: identifier : ( ID | PACKAGE | FUNCTION | GLOBAL | IMPORT | RULE | QUERY | TEMPLATE | ATTRIBUTES | ENABLED | SALIENCE | DURATION | DIALECT | FROM | INIT | ACTION | REVERSE | RESULT | CONTAINS | EXCLUDES | MEMBEROF | MATCHES | SOUNDSLIKE | WHEN | THEN | END | IN );
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1675:1: identifier : ( ID | PACKAGE | FUNCTION | GLOBAL | IMPORT | EVENT | RULE | QUERY | TEMPLATE | ATTRIBUTES | ENABLED | SALIENCE | DURATION | DIALECT | FROM | INIT | ACTION | REVERSE | RESULT | CONTAINS | EXCLUDES | MEMBEROF | MATCHES | SOUNDSLIKE | WHEN | THEN | END | IN );
     public final identifier_return identifier() throws RecognitionException {
         identifier_return retval = new identifier_return();
         retval.start = input.LT(1);
 
         try {
-            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1660:2: ( ID | PACKAGE | FUNCTION | GLOBAL | IMPORT | RULE | QUERY | TEMPLATE | ATTRIBUTES | ENABLED | SALIENCE | DURATION | DIALECT | FROM | INIT | ACTION | REVERSE | RESULT | CONTAINS | EXCLUDES | MEMBEROF | MATCHES | SOUNDSLIKE | WHEN | THEN | END | IN )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1676:2: ( ID | PACKAGE | FUNCTION | GLOBAL | IMPORT | EVENT | RULE | QUERY | TEMPLATE | ATTRIBUTES | ENABLED | SALIENCE | DURATION | DIALECT | FROM | INIT | ACTION | REVERSE | RESULT | CONTAINS | EXCLUDES | MEMBEROF | MATCHES | SOUNDSLIKE | WHEN | THEN | END | IN )
             // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:
             {
             if ( (input.LA(1)>=PACKAGE && input.LA(1)<=ID)||input.LA(1)==GLOBAL||(input.LA(1)>=QUERY && input.LA(1)<=ATTRIBUTES)||input.LA(1)==ENABLED||input.LA(1)==SALIENCE||(input.LA(1)>=DURATION && input.LA(1)<=DIALECT)||input.LA(1)==FROM||(input.LA(1)>=INIT && input.LA(1)<=RESULT)||(input.LA(1)>=CONTAINS && input.LA(1)<=IN)||input.LA(1)==THEN ) {
@@ -7058,10 +7128,10 @@
 
     // $ANTLR start synpred1
     public final void synpred1_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:801:6: ( EXISTS )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:801:8: EXISTS
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:817:6: ( EXISTS )
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:817:8: EXISTS
         {
-        match(input,EXISTS,FOLLOW_EXISTS_in_synpred11913); if (failed) return ;
+        match(input,EXISTS,FOLLOW_EXISTS_in_synpred11970); if (failed) return ;
 
         }
     }
@@ -7069,10 +7139,10 @@
 
     // $ANTLR start synpred2
     public final void synpred2_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:802:5: ( NOT )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:802:7: NOT
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:818:5: ( NOT )
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:818:7: NOT
         {
-        match(input,NOT,FOLLOW_NOT_in_synpred21931); if (failed) return ;
+        match(input,NOT,FOLLOW_NOT_in_synpred21988); if (failed) return ;
 
         }
     }
@@ -7080,10 +7150,10 @@
 
     // $ANTLR start synpred3
     public final void synpred3_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:803:5: ( EVAL )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:803:7: EVAL
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:819:5: ( EVAL )
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:819:7: EVAL
         {
-        match(input,EVAL,FOLLOW_EVAL_in_synpred31950); if (failed) return ;
+        match(input,EVAL,FOLLOW_EVAL_in_synpred32007); if (failed) return ;
 
         }
     }
@@ -7091,10 +7161,10 @@
 
     // $ANTLR start synpred4
     public final void synpred4_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:804:5: ( FORALL )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:804:7: FORALL
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:820:5: ( FORALL )
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:820:7: FORALL
         {
-        match(input,FORALL,FOLLOW_FORALL_in_synpred41969); if (failed) return ;
+        match(input,FORALL,FOLLOW_FORALL_in_synpred42026); if (failed) return ;
 
         }
     }
@@ -7102,10 +7172,10 @@
 
     // $ANTLR start synpred5
     public final void synpred5_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:805:5: ( LEFT_PAREN )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:805:7: LEFT_PAREN
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:821:5: ( LEFT_PAREN )
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:821:7: LEFT_PAREN
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred51988); if (failed) return ;
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred52045); if (failed) return ;
 
         }
     }
@@ -7113,10 +7183,10 @@
 
     // $ANTLR start synpred6
     public final void synpred6_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1092:6: ( LEFT_SQUARE )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1092:8: LEFT_SQUARE
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1108:6: ( LEFT_SQUARE )
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1108:8: LEFT_SQUARE
         {
-        match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_synpred62958); if (failed) return ;
+        match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_synpred63015); if (failed) return ;
 
         }
     }
@@ -7124,10 +7194,10 @@
 
     // $ANTLR start synpred7
     public final void synpred7_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1098:6: ( LEFT_PAREN )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1098:8: LEFT_PAREN
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1114:6: ( LEFT_PAREN )
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1114:8: LEFT_PAREN
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred72991); if (failed) return ;
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred73048); if (failed) return ;
 
         }
     }
@@ -7135,11 +7205,11 @@
 
     // $ANTLR start synpred8
     public final void synpred8_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1399:6: ( DOUBLE_PIPE and_restr_connective[or] )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1399:6: DOUBLE_PIPE and_restr_connective[or]
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1415:6: ( DOUBLE_PIPE and_restr_connective[or] )
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1415:6: DOUBLE_PIPE and_restr_connective[or]
         {
-        match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_synpred83723); if (failed) return ;
-        pushFollow(FOLLOW_and_restr_connective_in_synpred83734);
+        match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_synpred83780); if (failed) return ;
+        pushFollow(FOLLOW_and_restr_connective_in_synpred83791);
         and_restr_connective(or);
         _fsp--;
         if (failed) return ;
@@ -7150,11 +7220,11 @@
 
     // $ANTLR start synpred9
     public final void synpred9_fragment() throws RecognitionException {   
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1421:5: ( DOUBLE_AMPER constraint_expression[and] )
-        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1421:5: DOUBLE_AMPER constraint_expression[and]
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1437:5: ( DOUBLE_AMPER constraint_expression[and] )
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1437:5: DOUBLE_AMPER constraint_expression[and]
         {
-        match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_synpred93787); if (failed) return ;
-        pushFollow(FOLLOW_constraint_expression_in_synpred93798);
+        match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_synpred93844); if (failed) return ;
+        pushFollow(FOLLOW_constraint_expression_in_synpred93855);
         constraint_expression(and);
         _fsp--;
         if (failed) return ;
@@ -7302,24 +7372,24 @@
     static final String DFA8_eofS =
         "\6\uffff";
     static final String DFA8_minS =
-        "\2\4\1\uffff\1\74\1\uffff\1\4";
+        "\2\4\1\75\2\uffff\1\4";
     static final String DFA8_maxS =
-        "\2\75\1\uffff\1\74\1\uffff\1\75";
+        "\2\76\1\75\2\uffff\1\76";
     static final String DFA8_acceptS =
-        "\2\uffff\1\1\1\uffff\1\2\1\uffff";
+        "\3\uffff\1\2\1\1\1\uffff";
     static final String DFA8_specialS =
         "\6\uffff}>";
     static final String[] DFA8_transitionS = {
-            "\4\1\1\uffff\1\1\3\uffff\6\1\3\uffff\1\1\1\uffff\1\1\6\uffff"+
+            "\5\1\1\uffff\1\1\3\uffff\6\1\3\uffff\1\1\1\uffff\1\1\6\uffff"+
             "\2\1\5\uffff\1\1\5\uffff\4\1\1\uffff\6\1\6\uffff\1\1",
-            "\6\2\1\uffff\2\4\6\2\3\uffff\1\2\1\uffff\1\2\6\uffff\2\2\5\uffff"+
-            "\1\2\5\uffff\4\2\1\uffff\6\2\4\uffff\1\3\1\uffff\1\2",
-            "",
+            "\7\4\1\uffff\2\3\6\4\3\uffff\1\4\1\uffff\1\4\6\uffff\2\4\5\uffff"+
+            "\1\4\5\uffff\4\4\1\uffff\6\4\4\uffff\1\2\1\uffff\1\4",
             "\1\5",
             "",
-            "\4\2\1\uffff\1\2\1\uffff\2\4\6\2\3\uffff\1\2\1\uffff\1\2\6\uffff"+
-            "\2\2\5\uffff\1\2\5\uffff\4\2\1\uffff\6\2\4\uffff\1\3\1\uffff"+
-            "\1\2"
+            "",
+            "\5\4\1\uffff\1\4\1\uffff\2\3\6\4\3\uffff\1\4\1\uffff\1\4\6\uffff"+
+            "\2\4\5\uffff\1\4\5\uffff\4\4\1\uffff\6\4\4\uffff\1\2\1\uffff"+
+            "\1\4"
     };
 
     static final short[] DFA8_eot = DFA.unpackEncodedString(DFA8_eotS);
@@ -7352,7 +7422,7 @@
             this.transition = DFA8_transition;
         }
         public String getDescription() {
-            return "344:15: (paramType= dotted_name )?";
+            return "360:15: (paramType= dotted_name )?";
         }
     }
     static final String DFA9_eotS =
@@ -7360,24 +7430,24 @@
     static final String DFA9_eofS =
         "\6\uffff";
     static final String DFA9_minS =
-        "\2\4\1\uffff\1\74\1\uffff\1\4";
+        "\2\4\1\75\2\uffff\1\4";
     static final String DFA9_maxS =
-        "\2\75\1\uffff\1\74\1\uffff\1\75";
+        "\2\76\1\75\2\uffff\1\76";
     static final String DFA9_acceptS =
-        "\2\uffff\1\1\1\uffff\1\2\1\uffff";
+        "\3\uffff\1\2\1\1\1\uffff";
     static final String DFA9_specialS =
         "\6\uffff}>";
     static final String[] DFA9_transitionS = {
-            "\4\1\1\uffff\1\1\3\uffff\6\1\3\uffff\1\1\1\uffff\1\1\6\uffff"+
+            "\5\1\1\uffff\1\1\3\uffff\6\1\3\uffff\1\1\1\uffff\1\1\6\uffff"+
             "\2\1\5\uffff\1\1\5\uffff\4\1\1\uffff\6\1\6\uffff\1\1",
-            "\6\2\1\uffff\2\4\6\2\3\uffff\1\2\1\uffff\1\2\6\uffff\2\2\5\uffff"+
-            "\1\2\5\uffff\4\2\1\uffff\6\2\4\uffff\1\3\1\uffff\1\2",
-            "",
+            "\7\4\1\uffff\2\3\6\4\3\uffff\1\4\1\uffff\1\4\6\uffff\2\4\5\uffff"+
+            "\1\4\5\uffff\4\4\1\uffff\6\4\4\uffff\1\2\1\uffff\1\4",
             "\1\5",
             "",
-            "\4\2\1\uffff\1\2\1\uffff\2\4\6\2\3\uffff\1\2\1\uffff\1\2\6\uffff"+
-            "\2\2\5\uffff\1\2\5\uffff\4\2\1\uffff\6\2\4\uffff\1\3\1\uffff"+
-            "\1\2"
+            "",
+            "\5\4\1\uffff\1\4\1\uffff\2\3\6\4\3\uffff\1\4\1\uffff\1\4\6\uffff"+
+            "\2\4\5\uffff\1\4\5\uffff\4\4\1\uffff\6\4\4\uffff\1\2\1\uffff"+
+            "\1\4"
     };
 
     static final short[] DFA9_eot = DFA.unpackEncodedString(DFA9_eotS);
@@ -7410,7 +7480,7 @@
             this.transition = DFA9_transition;
         }
         public String getDescription() {
-            return "349:22: (paramType= dotted_name )?";
+            return "365:22: (paramType= dotted_name )?";
         }
     }
     static final String DFA17_eotS =
@@ -7418,9 +7488,9 @@
     static final String DFA17_eofS =
         "\11\uffff";
     static final String DFA17_minS =
-        "\2\7\1\uffff\1\7\1\uffff\1\4\1\74\2\7";
+        "\2\10\1\uffff\1\10\1\uffff\1\4\1\75\2\10";
     static final String DFA17_maxS =
-        "\2\52\1\uffff\1\112\1\uffff\1\75\1\74\2\73";
+        "\2\53\1\uffff\1\113\1\uffff\1\76\1\75\2\74";
     static final String DFA17_acceptS =
         "\2\uffff\1\2\1\uffff\1\1\4\uffff";
     static final String DFA17_specialS =
@@ -7432,7 +7502,7 @@
             "",
             "\1\4\1\5\1\uffff\1\2\2\4\56\uffff\1\6\16\uffff\1\2",
             "",
-            "\4\7\1\uffff\1\7\3\uffff\6\7\3\uffff\1\7\1\uffff\1\7\6\uffff"+
+            "\5\7\1\uffff\1\7\3\uffff\6\7\3\uffff\1\7\1\uffff\1\7\6\uffff"+
             "\2\7\5\uffff\1\7\5\uffff\4\7\1\uffff\6\7\6\uffff\1\7",
             "\1\10",
             "\1\4\1\5\1\uffff\1\2\60\uffff\1\6",
@@ -7469,7 +7539,7 @@
             this.transition = DFA17_transition;
         }
         public String getDescription() {
-            return "393:3: ( LEFT_PAREN ( ( (paramType= qualified_id )? paramName= ID ) ( COMMA (paramType= qualified_id )? paramName= ID )* )? RIGHT_PAREN )?";
+            return "409:3: ( LEFT_PAREN ( ( (paramType= qualified_id )? paramName= ID ) ( COMMA (paramType= qualified_id )? paramName= ID )* )? RIGHT_PAREN )?";
         }
     }
     static final String DFA52_eotS =
@@ -7477,101 +7547,100 @@
     static final String DFA52_eofS =
         "\150\uffff";
     static final String DFA52_minS =
-        "\1\7\1\uffff\1\4\1\uffff\3\4\1\0\1\uffff\4\4\1\uffff\4\4\1\0\1\4"+
-        "\1\0\5\4\1\0\1\4\1\0\1\4\2\0\3\4\1\0\1\4\2\0\1\4\2\0\3\4\1\0\1\4"+
-        "\1\0\1\4\3\0\3\4\1\0\3\4\1\0\3\4\1\0\1\4\1\0\1\4\1\uffff\44\0";
+        "\1\10\1\uffff\1\4\1\uffff\2\4\1\0\5\4\2\uffff\4\4\1\0\1\4\1\0\5"+
+        "\4\1\0\1\4\1\0\1\4\2\0\3\4\2\0\1\4\1\0\1\4\2\0\3\4\2\0\1\4\1\0\1"+
+        "\4\2\0\2\4\1\0\4\4\1\0\3\4\1\0\1\4\1\0\1\4\1\uffff\44\0";
     static final String DFA52_maxS =
-        "\1\110\1\uffff\1\121\1\uffff\3\121\1\0\1\uffff\4\121\1\uffff\4\121"+
-        "\1\0\1\121\1\0\5\121\1\0\1\121\1\0\1\121\2\0\3\121\1\0\1\121\2\0"+
-        "\1\121\2\0\3\121\1\0\1\121\1\0\1\121\3\0\3\121\1\0\3\121\1\0\3\121"+
-        "\1\0\1\121\1\0\1\121\1\uffff\44\0";
+        "\1\111\1\uffff\1\122\1\uffff\2\122\1\0\5\122\2\uffff\4\122\1\0\1"+
+        "\122\1\0\5\122\1\0\1\122\1\0\1\122\2\0\3\122\2\0\1\122\1\0\1\122"+
+        "\2\0\3\122\2\0\1\122\1\0\1\122\2\0\2\122\1\0\4\122\1\0\3\122\1\0"+
+        "\1\122\1\0\1\122\1\uffff\44\0";
     static final String DFA52_acceptS =
-        "\1\uffff\1\1\1\uffff\1\3\4\uffff\1\2\4\uffff\1\2\65\uffff\1\2\44"+
-        "\uffff";
+        "\1\uffff\1\1\1\uffff\1\3\10\uffff\2\2\65\uffff\1\2\44\uffff";
     static final String DFA52_specialS =
-        "\1\34\1\uffff\1\62\1\uffff\1\22\1\41\1\10\1\60\1\uffff\1\14\1\20"+
-        "\1\64\1\31\1\uffff\1\35\1\72\1\65\1\54\1\61\1\47\1\0\1\12\1\33\1"+
-        "\24\1\74\1\17\1\66\1\30\1\56\1\27\1\76\1\73\1\5\1\42\1\51\1\2\1"+
-        "\46\1\37\1\67\1\45\1\75\1\36\1\1\1\26\1\4\1\57\1\16\1\63\1\15\1"+
-        "\11\1\55\1\70\1\21\1\71\1\50\1\13\1\6\1\43\1\52\1\3\1\7\1\44\1\53"+
-        "\1\23\1\40\1\25\1\32\45\uffff}>";
+        "\1\43\1\uffff\1\47\1\uffff\1\32\1\2\1\73\1\25\1\35\1\67\1\12\1\31"+
+        "\2\uffff\1\75\1\74\1\71\1\4\1\7\1\42\1\45\1\26\1\64\1\61\1\24\1"+
+        "\55\1\46\1\30\1\33\1\27\1\3\1\44\1\51\1\20\1\14\1\60\1\65\1\41\1"+
+        "\5\1\40\1\34\1\66\1\13\1\50\1\6\1\36\1\57\1\54\1\10\1\56\1\63\1"+
+        "\72\1\1\1\0\1\37\1\76\1\52\1\21\1\15\1\17\1\53\1\22\1\16\1\62\1"+
+        "\23\1\70\1\11\45\uffff}>";
     static final String[] DFA52_transitionS = {
             "\2\3\1\uffff\1\2\2\3\1\uffff\1\3\23\uffff\4\3\1\uffff\4\3\1"+
             "\uffff\1\3\16\uffff\1\1\1\uffff\1\3\12\uffff\1\3",
             "",
-            "\3\15\1\14\2\15\1\7\1\15\1\10\25\15\1\5\1\15\1\4\2\15\1\6\1"+
-            "\11\1\12\1\13\47\15",
+            "\4\14\1\13\2\14\1\6\1\14\1\15\25\14\1\5\1\14\1\4\2\14\1\7\1"+
+            "\10\1\11\1\12\47\14",
             "",
-            "\3\15\1\23\2\15\1\22\1\15\1\10\32\15\1\16\1\17\1\20\1\21\47"+
-            "\15",
-            "\3\15\1\31\2\15\1\24\1\15\1\10\32\15\1\25\1\26\1\27\1\30\47"+
-            "\15",
-            "\3\15\1\33\2\15\1\32\1\15\1\10\105\15",
+            "\4\14\1\23\2\14\1\22\1\14\1\15\32\14\1\16\1\17\1\20\1\21\47"+
+            "\14",
+            "\4\14\1\31\2\14\1\24\1\14\1\15\32\14\1\25\1\26\1\27\1\30\47"+
+            "\14",
             "\1\uffff",
+            "\4\14\1\33\2\14\1\32\1\14\1\15\105\14",
+            "\4\14\1\35\2\14\1\34\1\14\1\15\105\14",
+            "\7\14\1\36\1\14\1\15\105\14",
+            "\7\14\1\37\1\14\1\15\105\14",
+            "\5\14\1\41\1\14\1\43\1\14\1\15\56\14\1\42\16\14\1\40\7\14",
             "",
-            "\3\15\1\35\2\15\1\34\1\15\1\10\105\15",
-            "\6\15\1\36\1\15\1\10\105\15",
-            "\6\15\1\37\1\15\1\10\105\15",
-            "\4\15\1\41\1\15\1\43\1\15\1\10\56\15\1\42\16\15\1\40\7\15",
             "",
-            "\3\15\1\44\2\15\1\45\1\15\1\10\105\15",
-            "\3\15\1\47\2\15\1\46\1\15\1\10\105\15",
-            "\6\15\1\50\1\15\1\10\105\15",
-            "\6\15\1\51\1\15\1\10\105\15",
+            "\4\14\1\45\2\14\1\44\1\14\1\15\105\14",
+            "\4\14\1\47\2\14\1\46\1\14\1\15\105\14",
+            "\7\14\1\50\1\14\1\15\105\14",
+            "\7\14\1\51\1\14\1\15\105\14",
             "\1\uffff",
-            "\4\15\1\53\1\15\1\55\1\15\1\10\56\15\1\54\16\15\1\52\7\15",
+            "\5\14\1\53\1\14\1\55\1\14\1\15\56\14\1\54\16\14\1\52\7\14",
             "\1\uffff",
-            "\3\15\1\56\2\15\1\57\1\15\1\10\105\15",
-            "\3\15\1\60\2\15\1\61\1\15\1\10\105\15",
-            "\6\15\1\62\1\15\1\10\105\15",
-            "\6\15\1\63\1\15\1\10\105\15",
-            "\4\15\1\65\1\15\1\67\1\15\1\10\56\15\1\66\16\15\1\64\7\15",
+            "\4\14\1\57\2\14\1\56\1\14\1\15\105\14",
+            "\4\14\1\61\2\14\1\60\1\14\1\15\105\14",
+            "\7\14\1\62\1\14\1\15\105\14",
+            "\7\14\1\63\1\14\1\15\105\14",
+            "\5\14\1\65\1\14\1\66\1\14\1\15\56\14\1\67\16\14\1\64\7\14",
             "\1\uffff",
-            "\4\15\1\71\1\15\1\73\1\15\1\10\56\15\1\72\16\15\1\70\7\15",
+            "\5\14\1\71\1\14\1\73\1\14\1\15\56\14\1\72\16\14\1\70\7\14",
             "\1\uffff",
-            "\4\15\1\75\1\15\1\77\1\15\1\10\56\15\1\76\16\15\1\74\7\15",
+            "\5\14\1\75\1\14\1\77\1\14\1\15\56\14\1\76\16\14\1\74\7\14",
             "\1\uffff",
             "\1\uffff",
-            "\3\15\1\100\2\15\1\101\1\15\1\10\105\15",
-            "\4\102\1\15\1\102\1\103\1\15\1\10\6\102\3\15\1\102\1\15\1\102"+
-            "\6\15\2\102\5\15\1\102\5\15\4\102\1\15\6\102\6\15\1\102\24\15",
-            "\6\15\1\103\1\15\1\10\57\15\1\104\25\15",
+            "\4\14\1\100\2\14\1\101\1\14\1\15\105\14",
+            "\5\102\1\14\1\102\1\103\1\14\1\15\6\102\3\14\1\102\1\14\1\102"+
+            "\6\14\2\102\5\14\1\102\5\14\4\102\1\14\6\102\6\14\1\102\24\14",
+            "\7\14\1\103\1\14\1\15\57\14\1\104\25\14",
             "\1\uffff",
-            "\4\15\1\106\1\15\1\110\1\15\1\10\56\15\1\107\16\15\1\105\7\15",
             "\1\uffff",
+            "\5\14\1\106\1\14\1\110\1\14\1\15\56\14\1\107\16\14\1\105\7\14",
             "\1\uffff",
-            "\4\15\1\112\1\15\1\114\1\15\1\10\56\15\1\113\16\15\1\111\7\15",
+            "\5\14\1\112\1\14\1\114\1\14\1\15\56\14\1\113\16\14\1\111\7\14",
             "\1\uffff",
             "\1\uffff",
-            "\3\15\1\115\2\15\1\116\1\15\1\10\105\15",
-            "\4\117\1\15\1\117\1\103\1\15\1\10\6\117\3\15\1\117\1\15\1\117"+
-            "\6\15\2\117\5\15\1\117\5\15\4\117\1\15\6\117\6\15\1\117\24\15",
-            "\6\15\1\103\1\15\1\10\57\15\1\120\25\15",
+            "\4\14\1\115\2\14\1\116\1\14\1\15\105\14",
+            "\5\117\1\14\1\117\1\103\1\14\1\15\6\117\3\14\1\117\1\14\1\117"+
+            "\6\14\2\117\5\14\1\117\5\14\4\117\1\14\6\117\6\14\1\117\24\14",
+            "\7\14\1\103\1\14\1\15\57\14\1\120\25\14",
             "\1\uffff",
-            "\4\15\1\122\1\15\1\124\1\15\1\10\56\15\1\123\16\15\1\121\7\15",
             "\1\uffff",
-            "\4\15\1\126\1\15\1\130\1\15\1\10\56\15\1\127\16\15\1\125\7\15",
+            "\5\14\1\122\1\14\1\123\1\14\1\15\56\14\1\124\16\14\1\121\7\14",
             "\1\uffff",
+            "\5\14\1\126\1\14\1\130\1\14\1\15\56\14\1\127\16\14\1\125\7\14",
             "\1\uffff",
             "\1\uffff",
-            "\3\15\1\131\2\15\1\132\1\15\1\10\105\15",
-            "\4\133\1\15\1\133\1\103\1\15\1\10\6\133\3\15\1\133\1\15\1\133"+
-            "\6\15\2\133\5\15\1\133\5\15\4\133\1\15\6\133\6\15\1\133\24\15",
-            "\6\15\1\103\1\15\1\10\57\15\1\134\25\15",
+            "\4\14\1\131\2\14\1\132\1\14\1\15\105\14",
+            "\5\133\1\14\1\133\1\103\1\14\1\15\6\133\3\14\1\133\1\14\1\133"+
+            "\6\14\2\133\5\14\1\133\5\14\4\133\1\14\6\133\6\14\1\133\24\14",
             "\1\uffff",
-            "\3\15\1\135\2\15\1\136\1\15\1\10\105\15",
-            "\4\137\1\15\1\137\1\103\1\15\1\10\6\137\3\15\1\137\1\15\1\137"+
-            "\6\15\2\137\5\15\1\137\5\15\4\137\1\15\6\137\6\15\1\137\24\15",
-            "\6\15\1\103\1\15\1\10\57\15\1\140\25\15",
+            "\7\14\1\103\1\14\1\15\57\14\1\134\25\14",
+            "\4\14\1\135\2\14\1\136\1\14\1\15\105\14",
+            "\5\137\1\14\1\137\1\103\1\14\1\15\6\137\3\14\1\137\1\14\1\137"+
+            "\6\14\2\137\5\14\1\137\5\14\4\137\1\14\6\137\6\14\1\137\24\14",
+            "\7\14\1\103\1\14\1\15\57\14\1\140\25\14",
             "\1\uffff",
-            "\3\15\1\141\2\15\1\142\1\15\1\10\105\15",
-            "\4\143\1\15\1\143\1\103\1\15\1\10\6\143\3\15\1\143\1\15\1\143"+
-            "\6\15\2\143\5\15\1\143\5\15\4\143\1\15\6\143\6\15\1\143\24\15",
-            "\6\15\1\103\1\15\1\10\57\15\1\144\25\15",
+            "\4\14\1\141\2\14\1\142\1\14\1\15\105\14",
+            "\5\143\1\14\1\143\1\103\1\14\1\15\6\143\3\14\1\143\1\14\1\143"+
+            "\6\14\2\143\5\14\1\143\5\14\4\143\1\14\6\143\6\14\1\143\24\14",
+            "\7\14\1\103\1\14\1\15\57\14\1\144\25\14",
             "\1\uffff",
-            "\4\15\1\145\1\15\1\147\1\15\1\10\56\15\1\146\26\15",
+            "\5\14\1\145\1\14\1\147\1\14\1\15\56\14\1\146\26\14",
             "\1\uffff",
-            "\4\15\1\41\1\15\1\43\1\15\1\10\56\15\1\42\26\15",
+            "\5\14\1\41\1\14\1\43\1\14\1\15\56\14\1\42\26\14",
             "",
             "\1\uffff",
             "\1\uffff",
@@ -7641,434 +7710,432 @@
             this.transition = DFA52_transition;
         }
         public String getDescription() {
-            return "1091:4: ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )?";
+            return "1107:4: ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )?";
         }
         public int specialStateTransition(int s, IntStream input) throws NoViableAltException {
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA52_20 = input.LA(1);
+                        int LA52_53 = input.LA(1);
 
                          
-                        int index52_20 = input.index();
+                        int index52_53 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 13;}
+                        if ( ((LA52_53>=PACKAGE && LA52_53<=ID)||LA52_53==GLOBAL||(LA52_53>=QUERY && LA52_53<=ATTRIBUTES)||LA52_53==ENABLED||LA52_53==SALIENCE||(LA52_53>=DURATION && LA52_53<=DIALECT)||LA52_53==FROM||(LA52_53>=INIT && LA52_53<=RESULT)||(LA52_53>=CONTAINS && LA52_53<=IN)||LA52_53==THEN) ) {s = 91;}
 
-                        else if ( (true) ) {s = 3;}
+                        else if ( (LA52_53==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
+                        else if ( (LA52_53==DOT||LA52_53==COMMA||(LA52_53>=DATE_EFFECTIVE && LA52_53<=DATE_EXPIRES)||LA52_53==BOOL||(LA52_53>=INT && LA52_53<=AGENDA_GROUP)||(LA52_53>=LOCK_ON_ACTIVE && LA52_53<=DOUBLE_AMPER)||(LA52_53>=EXISTS && LA52_53<=ACCUMULATE)||LA52_53==COLLECT||(LA52_53>=FLOAT && LA52_53<=RIGHT_SQUARE)||(LA52_53>=EOL && LA52_53<=82)) && (synpred7())) {s = 12;}
+
+                        else if ( (LA52_53==LEFT_PAREN) && (synpred7())) {s = 67;}
+
                          
-                        input.seek(index52_20);
+                        input.seek(index52_53);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA52_42 = input.LA(1);
+                        int LA52_52 = input.LA(1);
 
                          
-                        int index52_42 = input.index();
+                        int index52_52 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_42==ID) ) {s = 77;}
+                        if ( (LA52_52==ID) ) {s = 89;}
 
-                        else if ( (LA52_42==LEFT_PAREN) ) {s = 78;}
+                        else if ( (LA52_52==LEFT_PAREN) ) {s = 90;}
 
-                        else if ( (LA52_42==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( (LA52_52==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( ((LA52_42>=PACKAGE && LA52_42<=FUNCTION)||(LA52_42>=DOT && LA52_42<=GLOBAL)||LA52_42==COMMA||(LA52_42>=QUERY && LA52_42<=81)) && (synpred7())) {s = 13;}
+                        else if ( ((LA52_52>=PACKAGE && LA52_52<=EVENT)||(LA52_52>=DOT && LA52_52<=GLOBAL)||LA52_52==COMMA||(LA52_52>=QUERY && LA52_52<=82)) && (synpred7())) {s = 12;}
 
                          
-                        input.seek(index52_42);
+                        input.seek(index52_52);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA52_35 = input.LA(1);
+                        int LA52_5 = input.LA(1);
 
                          
-                        int index52_35 = input.index();
+                        int index52_5 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 67;}
+                        if ( (LA52_5==LEFT_PAREN) ) {s = 20;}
 
-                        else if ( (true) ) {s = 3;}
+                        else if ( (LA52_5==EXISTS) ) {s = 21;}
 
+                        else if ( (LA52_5==NOT) ) {s = 22;}
+
+                        else if ( (LA52_5==EVAL) ) {s = 23;}
+
+                        else if ( (LA52_5==FORALL) ) {s = 24;}
+
+                        else if ( (LA52_5==ID) ) {s = 25;}
+
+                        else if ( (LA52_5==RIGHT_PAREN) && (synpred7())) {s = 13;}
+
+                        else if ( ((LA52_5>=PACKAGE && LA52_5<=EVENT)||(LA52_5>=DOT && LA52_5<=GLOBAL)||LA52_5==COMMA||(LA52_5>=QUERY && LA52_5<=FROM)||(LA52_5>=ACCUMULATE && LA52_5<=82)) && (synpred7())) {s = 12;}
+
                          
-                        input.seek(index52_35);
+                        input.seek(index52_5);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA52_59 = input.LA(1);
+                        int LA52_30 = input.LA(1);
 
                          
-                        int index52_59 = input.index();
+                        int index52_30 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 67;}
+                        if ( (synpred7()) ) {s = 13;}
 
                         else if ( (true) ) {s = 3;}
 
                          
-                        input.seek(index52_59);
+                        input.seek(index52_30);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA52_44 = input.LA(1);
+                        int LA52_17 = input.LA(1);
 
                          
-                        int index52_44 = input.index();
+                        int index52_17 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_44==RIGHT_SQUARE) ) {s = 80;}
+                        if ( (LA52_17==LEFT_PAREN) ) {s = 41;}
 
-                        else if ( (LA52_44==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( (LA52_17==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( ((LA52_44>=PACKAGE && LA52_44<=GLOBAL)||LA52_44==COMMA||(LA52_44>=QUERY && LA52_44<=LEFT_SQUARE)||(LA52_44>=THEN && LA52_44<=81)) && (synpred7())) {s = 13;}
+                        else if ( ((LA52_17>=PACKAGE && LA52_17<=GLOBAL)||LA52_17==COMMA||(LA52_17>=QUERY && LA52_17<=82)) && (synpred7())) {s = 12;}
 
-                        else if ( (LA52_44==LEFT_PAREN) && (synpred7())) {s = 67;}
-
                          
-                        input.seek(index52_44);
+                        input.seek(index52_17);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA52_32 = input.LA(1);
+                        int LA52_38 = input.LA(1);
 
                          
-                        int index52_32 = input.index();
+                        int index52_38 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_32==ID) ) {s = 64;}
+                        if ( (synpred7()) ) {s = 67;}
 
-                        else if ( (LA52_32==LEFT_PAREN) ) {s = 65;}
+                        else if ( (true) ) {s = 3;}
 
-                        else if ( (LA52_32==RIGHT_PAREN) && (synpred7())) {s = 8;}
-
-                        else if ( ((LA52_32>=PACKAGE && LA52_32<=FUNCTION)||(LA52_32>=DOT && LA52_32<=GLOBAL)||LA52_32==COMMA||(LA52_32>=QUERY && LA52_32<=81)) && (synpred7())) {s = 13;}
-
                          
-                        input.seek(index52_32);
+                        input.seek(index52_38);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA52_56 = input.LA(1);
+                        int LA52_44 = input.LA(1);
 
                          
-                        int index52_56 = input.index();
+                        int index52_44 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_56==ID) ) {s = 93;}
+                        if ( (LA52_44==RIGHT_SQUARE) ) {s = 80;}
 
-                        else if ( (LA52_56==LEFT_PAREN) ) {s = 94;}
+                        else if ( (LA52_44==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( (LA52_56==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( ((LA52_44>=PACKAGE && LA52_44<=GLOBAL)||LA52_44==COMMA||(LA52_44>=QUERY && LA52_44<=LEFT_SQUARE)||(LA52_44>=THEN && LA52_44<=82)) && (synpred7())) {s = 12;}
 
-                        else if ( ((LA52_56>=PACKAGE && LA52_56<=FUNCTION)||(LA52_56>=DOT && LA52_56<=GLOBAL)||LA52_56==COMMA||(LA52_56>=QUERY && LA52_56<=81)) && (synpred7())) {s = 13;}
+                        else if ( (LA52_44==LEFT_PAREN) && (synpred7())) {s = 67;}
 
                          
-                        input.seek(index52_56);
+                        input.seek(index52_44);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA52_60 = input.LA(1);
+                        int LA52_18 = input.LA(1);
 
                          
-                        int index52_60 = input.index();
+                        int index52_18 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_60==ID) ) {s = 97;}
+                        if ( (synpred7()) ) {s = 13;}
 
-                        else if ( (LA52_60==LEFT_PAREN) ) {s = 98;}
+                        else if ( (true) ) {s = 3;}
 
-                        else if ( (LA52_60==RIGHT_PAREN) && (synpred7())) {s = 8;}
-
-                        else if ( ((LA52_60>=PACKAGE && LA52_60<=FUNCTION)||(LA52_60>=DOT && LA52_60<=GLOBAL)||LA52_60==COMMA||(LA52_60>=QUERY && LA52_60<=81)) && (synpred7())) {s = 13;}
-
                          
-                        input.seek(index52_60);
+                        input.seek(index52_18);
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA52_6 = input.LA(1);
+                        int LA52_48 = input.LA(1);
 
                          
-                        int index52_6 = input.index();
+                        int index52_48 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_6==LEFT_PAREN) ) {s = 26;}
+                        if ( (synpred7()) ) {s = 67;}
 
-                        else if ( (LA52_6==ID) ) {s = 27;}
+                        else if ( (true) ) {s = 3;}
 
-                        else if ( (LA52_6==RIGHT_PAREN) && (synpred7())) {s = 8;}
-
-                        else if ( ((LA52_6>=PACKAGE && LA52_6<=FUNCTION)||(LA52_6>=DOT && LA52_6<=GLOBAL)||LA52_6==COMMA||(LA52_6>=QUERY && LA52_6<=81)) && (synpred7())) {s = 13;}
-
                          
-                        input.seek(index52_6);
+                        input.seek(index52_48);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
-                        int LA52_49 = input.LA(1);
+                        int LA52_66 = input.LA(1);
 
                          
-                        int index52_49 = input.index();
+                        int index52_66 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 67;}
+                        if ( (LA52_66==LEFT_SQUARE) ) {s = 34;}
 
-                        else if ( (true) ) {s = 3;}
+                        else if ( (LA52_66==LEFT_PAREN) ) {s = 35;}
 
+                        else if ( (LA52_66==DOT) ) {s = 33;}
+
+                        else if ( (LA52_66==RIGHT_PAREN) && (synpred7())) {s = 13;}
+
+                        else if ( ((LA52_66>=PACKAGE && LA52_66<=ID)||LA52_66==GLOBAL||LA52_66==COMMA||(LA52_66>=QUERY && LA52_66<=RIGHT_CURLY)||(LA52_66>=RIGHT_SQUARE && LA52_66<=82)) && (synpred7())) {s = 12;}
+
                          
-                        input.seek(index52_49);
+                        input.seek(index52_66);
                         if ( s>=0 ) return s;
                         break;
                     case 10 : 
-                        int LA52_21 = input.LA(1);
+                        int LA52_10 = input.LA(1);
 
                          
-                        int index52_21 = input.index();
+                        int index52_10 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_21==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        if ( (LA52_10==LEFT_PAREN) ) {s = 31;}
 
-                        else if ( (LA52_21==ID) ) {s = 46;}
+                        else if ( (LA52_10==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( (LA52_21==LEFT_PAREN) ) {s = 47;}
+                        else if ( ((LA52_10>=PACKAGE && LA52_10<=GLOBAL)||LA52_10==COMMA||(LA52_10>=QUERY && LA52_10<=82)) && (synpred7())) {s = 12;}
 
-                        else if ( ((LA52_21>=PACKAGE && LA52_21<=FUNCTION)||(LA52_21>=DOT && LA52_21<=GLOBAL)||LA52_21==COMMA||(LA52_21>=QUERY && LA52_21<=81)) && (synpred7())) {s = 13;}
-
                          
-                        input.seek(index52_21);
+                        input.seek(index52_10);
                         if ( s>=0 ) return s;
                         break;
                     case 11 : 
-                        int LA52_55 = input.LA(1);
+                        int LA52_42 = input.LA(1);
 
                          
-                        int index52_55 = input.index();
+                        int index52_42 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 67;}
+                        if ( (LA52_42==ID) ) {s = 77;}
 
-                        else if ( (true) ) {s = 3;}
+                        else if ( (LA52_42==LEFT_PAREN) ) {s = 78;}
 
+                        else if ( (LA52_42==RIGHT_PAREN) && (synpred7())) {s = 13;}
+
+                        else if ( ((LA52_42>=PACKAGE && LA52_42<=EVENT)||(LA52_42>=DOT && LA52_42<=GLOBAL)||LA52_42==COMMA||(LA52_42>=QUERY && LA52_42<=82)) && (synpred7())) {s = 12;}
+
                          
-                        input.seek(index52_55);
+                        input.seek(index52_42);
                         if ( s>=0 ) return s;
                         break;
                     case 12 : 
-                        int LA52_9 = input.LA(1);
+                        int LA52_34 = input.LA(1);
 
                          
-                        int index52_9 = input.index();
+                        int index52_34 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_9==LEFT_PAREN) ) {s = 28;}
+                        if ( (LA52_34==RIGHT_SQUARE) ) {s = 68;}
 
-                        else if ( (LA52_9==ID) ) {s = 29;}
+                        else if ( (LA52_34==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( (LA52_9==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( ((LA52_34>=PACKAGE && LA52_34<=GLOBAL)||LA52_34==COMMA||(LA52_34>=QUERY && LA52_34<=LEFT_SQUARE)||(LA52_34>=THEN && LA52_34<=82)) && (synpred7())) {s = 12;}
 
-                        else if ( ((LA52_9>=PACKAGE && LA52_9<=FUNCTION)||(LA52_9>=DOT && LA52_9<=GLOBAL)||LA52_9==COMMA||(LA52_9>=QUERY && LA52_9<=81)) && (synpred7())) {s = 13;}
+                        else if ( (LA52_34==LEFT_PAREN) && (synpred7())) {s = 67;}
 
                          
-                        input.seek(index52_9);
+                        input.seek(index52_34);
                         if ( s>=0 ) return s;
                         break;
                     case 13 : 
-                        int LA52_48 = input.LA(1);
+                        int LA52_58 = input.LA(1);
 
                          
-                        int index52_48 = input.index();
+                        int index52_58 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_48==74) ) {s = 85;}
+                        if ( (LA52_58==RIGHT_SQUARE) ) {s = 96;}
 
-                        else if ( (LA52_48==DOT) ) {s = 86;}
+                        else if ( (LA52_58==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( (LA52_48==LEFT_SQUARE) ) {s = 87;}
+                        else if ( ((LA52_58>=PACKAGE && LA52_58<=GLOBAL)||LA52_58==COMMA||(LA52_58>=QUERY && LA52_58<=LEFT_SQUARE)||(LA52_58>=THEN && LA52_58<=82)) && (synpred7())) {s = 12;}
 
-                        else if ( (LA52_48==LEFT_PAREN) ) {s = 88;}
+                        else if ( (LA52_58==LEFT_PAREN) && (synpred7())) {s = 67;}
 
-                        else if ( (LA52_48==RIGHT_PAREN) && (synpred7())) {s = 8;}
-
-                        else if ( ((LA52_48>=PACKAGE && LA52_48<=ID)||LA52_48==GLOBAL||LA52_48==COMMA||(LA52_48>=QUERY && LA52_48<=RIGHT_CURLY)||(LA52_48>=RIGHT_SQUARE && LA52_48<=73)||(LA52_48>=75 && LA52_48<=81)) && (synpred7())) {s = 13;}
-
                          
-                        input.seek(index52_48);
+                        input.seek(index52_58);
                         if ( s>=0 ) return s;
                         break;
                     case 14 : 
-                        int LA52_46 = input.LA(1);
+                        int LA52_62 = input.LA(1);
 
                          
-                        int index52_46 = input.index();
+                        int index52_62 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_46==74) ) {s = 81;}
+                        if ( (LA52_62==RIGHT_SQUARE) ) {s = 100;}
 
-                        else if ( (LA52_46==DOT) ) {s = 82;}
+                        else if ( (LA52_62==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( (LA52_46==LEFT_SQUARE) ) {s = 83;}
+                        else if ( ((LA52_62>=PACKAGE && LA52_62<=GLOBAL)||LA52_62==COMMA||(LA52_62>=QUERY && LA52_62<=LEFT_SQUARE)||(LA52_62>=THEN && LA52_62<=82)) && (synpred7())) {s = 12;}
 
-                        else if ( (LA52_46==LEFT_PAREN) ) {s = 84;}
+                        else if ( (LA52_62==LEFT_PAREN) && (synpred7())) {s = 67;}
 
-                        else if ( (LA52_46==RIGHT_PAREN) && (synpred7())) {s = 8;}
-
-                        else if ( ((LA52_46>=PACKAGE && LA52_46<=ID)||LA52_46==GLOBAL||LA52_46==COMMA||(LA52_46>=QUERY && LA52_46<=RIGHT_CURLY)||(LA52_46>=RIGHT_SQUARE && LA52_46<=73)||(LA52_46>=75 && LA52_46<=81)) && (synpred7())) {s = 13;}
-
                          
-                        input.seek(index52_46);
+                        input.seek(index52_62);
                         if ( s>=0 ) return s;
                         break;
                     case 15 : 
-                        int LA52_25 = input.LA(1);
+                        int LA52_59 = input.LA(1);
 
                          
-                        int index52_25 = input.index();
+                        int index52_59 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_25==74) ) {s = 52;}
+                        if ( (synpred7()) ) {s = 67;}
 
-                        else if ( (LA52_25==DOT) ) {s = 53;}
+                        else if ( (true) ) {s = 3;}
 
-                        else if ( (LA52_25==LEFT_SQUARE) ) {s = 54;}
-
-                        else if ( (LA52_25==LEFT_PAREN) ) {s = 55;}
-
-                        else if ( (LA52_25==RIGHT_PAREN) && (synpred7())) {s = 8;}
-
-                        else if ( ((LA52_25>=PACKAGE && LA52_25<=ID)||LA52_25==GLOBAL||LA52_25==COMMA||(LA52_25>=QUERY && LA52_25<=RIGHT_CURLY)||(LA52_25>=RIGHT_SQUARE && LA52_25<=73)||(LA52_25>=75 && LA52_25<=81)) && (synpred7())) {s = 13;}
-
                          
-                        input.seek(index52_25);
+                        input.seek(index52_59);
                         if ( s>=0 ) return s;
                         break;
                     case 16 : 
-                        int LA52_10 = input.LA(1);
+                        int LA52_33 = input.LA(1);
 
                          
-                        int index52_10 = input.index();
+                        int index52_33 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_10==LEFT_PAREN) ) {s = 30;}
+                        if ( ((LA52_33>=PACKAGE && LA52_33<=ID)||LA52_33==GLOBAL||(LA52_33>=QUERY && LA52_33<=ATTRIBUTES)||LA52_33==ENABLED||LA52_33==SALIENCE||(LA52_33>=DURATION && LA52_33<=DIALECT)||LA52_33==FROM||(LA52_33>=INIT && LA52_33<=RESULT)||(LA52_33>=CONTAINS && LA52_33<=IN)||LA52_33==THEN) ) {s = 66;}
 
-                        else if ( (LA52_10==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( (LA52_33==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( ((LA52_10>=PACKAGE && LA52_10<=GLOBAL)||LA52_10==COMMA||(LA52_10>=QUERY && LA52_10<=81)) && (synpred7())) {s = 13;}
+                        else if ( (LA52_33==DOT||LA52_33==COMMA||(LA52_33>=DATE_EFFECTIVE && LA52_33<=DATE_EXPIRES)||LA52_33==BOOL||(LA52_33>=INT && LA52_33<=AGENDA_GROUP)||(LA52_33>=LOCK_ON_ACTIVE && LA52_33<=DOUBLE_AMPER)||(LA52_33>=EXISTS && LA52_33<=ACCUMULATE)||LA52_33==COLLECT||(LA52_33>=FLOAT && LA52_33<=RIGHT_SQUARE)||(LA52_33>=EOL && LA52_33<=82)) && (synpred7())) {s = 12;}
 
+                        else if ( (LA52_33==LEFT_PAREN) && (synpred7())) {s = 67;}
+
                          
-                        input.seek(index52_10);
+                        input.seek(index52_33);
                         if ( s>=0 ) return s;
                         break;
                     case 17 : 
-                        int LA52_52 = input.LA(1);
+                        int LA52_57 = input.LA(1);
 
                          
-                        int index52_52 = input.index();
+                        int index52_57 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_52==ID) ) {s = 89;}
+                        if ( ((LA52_57>=PACKAGE && LA52_57<=ID)||LA52_57==GLOBAL||(LA52_57>=QUERY && LA52_57<=ATTRIBUTES)||LA52_57==ENABLED||LA52_57==SALIENCE||(LA52_57>=DURATION && LA52_57<=DIALECT)||LA52_57==FROM||(LA52_57>=INIT && LA52_57<=RESULT)||(LA52_57>=CONTAINS && LA52_57<=IN)||LA52_57==THEN) ) {s = 95;}
 
-                        else if ( (LA52_52==LEFT_PAREN) ) {s = 90;}
+                        else if ( (LA52_57==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( (LA52_52==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( (LA52_57==DOT||LA52_57==COMMA||(LA52_57>=DATE_EFFECTIVE && LA52_57<=DATE_EXPIRES)||LA52_57==BOOL||(LA52_57>=INT && LA52_57<=AGENDA_GROUP)||(LA52_57>=LOCK_ON_ACTIVE && LA52_57<=DOUBLE_AMPER)||(LA52_57>=EXISTS && LA52_57<=ACCUMULATE)||LA52_57==COLLECT||(LA52_57>=FLOAT && LA52_57<=RIGHT_SQUARE)||(LA52_57>=EOL && LA52_57<=82)) && (synpred7())) {s = 12;}
 
-                        else if ( ((LA52_52>=PACKAGE && LA52_52<=FUNCTION)||(LA52_52>=DOT && LA52_52<=GLOBAL)||LA52_52==COMMA||(LA52_52>=QUERY && LA52_52<=81)) && (synpred7())) {s = 13;}
+                        else if ( (LA52_57==LEFT_PAREN) && (synpred7())) {s = 67;}
 
                          
-                        input.seek(index52_52);
+                        input.seek(index52_57);
                         if ( s>=0 ) return s;
                         break;
                     case 18 : 
-                        int LA52_4 = input.LA(1);
+                        int LA52_61 = input.LA(1);
 
                          
-                        int index52_4 = input.index();
+                        int index52_61 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_4==EXISTS) ) {s = 14;}
+                        if ( ((LA52_61>=PACKAGE && LA52_61<=ID)||LA52_61==GLOBAL||(LA52_61>=QUERY && LA52_61<=ATTRIBUTES)||LA52_61==ENABLED||LA52_61==SALIENCE||(LA52_61>=DURATION && LA52_61<=DIALECT)||LA52_61==FROM||(LA52_61>=INIT && LA52_61<=RESULT)||(LA52_61>=CONTAINS && LA52_61<=IN)||LA52_61==THEN) ) {s = 99;}
 
-                        else if ( (LA52_4==NOT) ) {s = 15;}
+                        else if ( (LA52_61==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( (LA52_4==EVAL) ) {s = 16;}
+                        else if ( (LA52_61==DOT||LA52_61==COMMA||(LA52_61>=DATE_EFFECTIVE && LA52_61<=DATE_EXPIRES)||LA52_61==BOOL||(LA52_61>=INT && LA52_61<=AGENDA_GROUP)||(LA52_61>=LOCK_ON_ACTIVE && LA52_61<=DOUBLE_AMPER)||(LA52_61>=EXISTS && LA52_61<=ACCUMULATE)||LA52_61==COLLECT||(LA52_61>=FLOAT && LA52_61<=RIGHT_SQUARE)||(LA52_61>=EOL && LA52_61<=82)) && (synpred7())) {s = 12;}
 
-                        else if ( (LA52_4==FORALL) ) {s = 17;}
+                        else if ( (LA52_61==LEFT_PAREN) && (synpred7())) {s = 67;}
 
-                        else if ( (LA52_4==LEFT_PAREN) ) {s = 18;}
-
-                        else if ( (LA52_4==ID) ) {s = 19;}
-
-                        else if ( (LA52_4==RIGHT_PAREN) && (synpred7())) {s = 8;}
-
-                        else if ( ((LA52_4>=PACKAGE && LA52_4<=FUNCTION)||(LA52_4>=DOT && LA52_4<=GLOBAL)||LA52_4==COMMA||(LA52_4>=QUERY && LA52_4<=FROM)||(LA52_4>=ACCUMULATE && LA52_4<=81)) && (synpred7())) {s = 13;}
-
                          
-                        input.seek(index52_4);
+                        input.seek(index52_61);
                         if ( s>=0 ) return s;
                         break;
                     case 19 : 
-                        int LA52_63 = input.LA(1);
+                        int LA52_64 = input.LA(1);
 
                          
-                        int index52_63 = input.index();
+                        int index52_64 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 67;}
+                        if ( (LA52_64==DOT) ) {s = 101;}
 
-                        else if ( (true) ) {s = 3;}
+                        else if ( (LA52_64==LEFT_SQUARE) ) {s = 102;}
 
+                        else if ( (LA52_64==LEFT_PAREN) ) {s = 103;}
+
+                        else if ( (LA52_64==RIGHT_PAREN) && (synpred7())) {s = 13;}
+
+                        else if ( ((LA52_64>=PACKAGE && LA52_64<=ID)||LA52_64==GLOBAL||LA52_64==COMMA||(LA52_64>=QUERY && LA52_64<=RIGHT_CURLY)||(LA52_64>=RIGHT_SQUARE && LA52_64<=82)) && (synpred7())) {s = 12;}
+
                          
-                        input.seek(index52_63);
+                        input.seek(index52_64);
                         if ( s>=0 ) return s;
                         break;
                     case 20 : 
-                        int LA52_23 = input.LA(1);
+                        int LA52_24 = input.LA(1);
 
                          
-                        int index52_23 = input.index();
+                        int index52_24 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_23==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        if ( (LA52_24==LEFT_PAREN) ) {s = 51;}
 
-                        else if ( ((LA52_23>=PACKAGE && LA52_23<=GLOBAL)||LA52_23==COMMA||(LA52_23>=QUERY && LA52_23<=81)) && (synpred7())) {s = 13;}
+                        else if ( (LA52_24==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( (LA52_23==LEFT_PAREN) ) {s = 50;}
+                        else if ( ((LA52_24>=PACKAGE && LA52_24<=GLOBAL)||LA52_24==COMMA||(LA52_24>=QUERY && LA52_24<=82)) && (synpred7())) {s = 12;}
 
                          
-                        input.seek(index52_23);
+                        input.seek(index52_24);
                         if ( s>=0 ) return s;
                         break;
                     case 21 : 
-                        int LA52_65 = input.LA(1);
+                        int LA52_7 = input.LA(1);
 
                          
-                        int index52_65 = input.index();
+                        int index52_7 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 67;}
+                        if ( (LA52_7==LEFT_PAREN) ) {s = 26;}
 
-                        else if ( (true) ) {s = 3;}
+                        else if ( (LA52_7==ID) ) {s = 27;}
 
+                        else if ( (LA52_7==RIGHT_PAREN) && (synpred7())) {s = 13;}
+
+                        else if ( ((LA52_7>=PACKAGE && LA52_7<=EVENT)||(LA52_7>=DOT && LA52_7<=GLOBAL)||LA52_7==COMMA||(LA52_7>=QUERY && LA52_7<=82)) && (synpred7())) {s = 12;}
+
                          
-                        input.seek(index52_65);
+                        input.seek(index52_7);
                         if ( s>=0 ) return s;
                         break;
                     case 22 : 
-                        int LA52_43 = input.LA(1);
+                        int LA52_21 = input.LA(1);
 
                          
-                        int index52_43 = input.index();
+                        int index52_21 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((LA52_43>=PACKAGE && LA52_43<=ID)||LA52_43==GLOBAL||(LA52_43>=QUERY && LA52_43<=ATTRIBUTES)||LA52_43==ENABLED||LA52_43==SALIENCE||(LA52_43>=DURATION && LA52_43<=DIALECT)||LA52_43==FROM||(LA52_43>=INIT && LA52_43<=RESULT)||(LA52_43>=CONTAINS && LA52_43<=IN)||LA52_43==THEN) ) {s = 79;}
+                        if ( (LA52_21==LEFT_PAREN) ) {s = 46;}
 
-                        else if ( (LA52_43==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( (LA52_21==ID) ) {s = 47;}
 
-                        else if ( (LA52_43==DOT||LA52_43==COMMA||(LA52_43>=DATE_EFFECTIVE && LA52_43<=DATE_EXPIRES)||LA52_43==BOOL||(LA52_43>=INT && LA52_43<=AGENDA_GROUP)||(LA52_43>=LOCK_ON_ACTIVE && LA52_43<=DOUBLE_AMPER)||(LA52_43>=EXISTS && LA52_43<=ACCUMULATE)||LA52_43==COLLECT||(LA52_43>=FLOAT && LA52_43<=RIGHT_SQUARE)||(LA52_43>=EOL && LA52_43<=81)) && (synpred7())) {s = 13;}
+                        else if ( (LA52_21==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( (LA52_43==LEFT_PAREN) && (synpred7())) {s = 67;}
+                        else if ( ((LA52_21>=PACKAGE && LA52_21<=EVENT)||(LA52_21>=DOT && LA52_21<=GLOBAL)||LA52_21==COMMA||(LA52_21>=QUERY && LA52_21<=82)) && (synpred7())) {s = 12;}
 
                          
-                        input.seek(index52_43);
+                        input.seek(index52_21);
                         if ( s>=0 ) return s;
                         break;
                     case 23 : 
@@ -8078,7 +8145,7 @@
                         int index52_29 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_29==74) ) {s = 60;}
+                        if ( (LA52_29==75) ) {s = 60;}
 
                         else if ( (LA52_29==DOT) ) {s = 61;}
 
@@ -8086,9 +8153,9 @@
 
                         else if ( (LA52_29==LEFT_PAREN) ) {s = 63;}
 
-                        else if ( (LA52_29==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( (LA52_29==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( ((LA52_29>=PACKAGE && LA52_29<=ID)||LA52_29==GLOBAL||LA52_29==COMMA||(LA52_29>=QUERY && LA52_29<=RIGHT_CURLY)||(LA52_29>=RIGHT_SQUARE && LA52_29<=73)||(LA52_29>=75 && LA52_29<=81)) && (synpred7())) {s = 13;}
+                        else if ( ((LA52_29>=PACKAGE && LA52_29<=ID)||LA52_29==GLOBAL||LA52_29==COMMA||(LA52_29>=QUERY && LA52_29<=RIGHT_CURLY)||(LA52_29>=RIGHT_SQUARE && LA52_29<=74)||(LA52_29>=76 && LA52_29<=82)) && (synpred7())) {s = 12;}
 
                          
                         input.seek(index52_29);
@@ -8101,7 +8168,7 @@
                         int index52_27 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_27==74) ) {s = 56;}
+                        if ( (LA52_27==75) ) {s = 56;}
 
                         else if ( (LA52_27==DOT) ) {s = 57;}
 
@@ -8109,118 +8176,118 @@
 
                         else if ( (LA52_27==LEFT_PAREN) ) {s = 59;}
 
-                        else if ( (LA52_27==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( (LA52_27==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( ((LA52_27>=PACKAGE && LA52_27<=ID)||LA52_27==GLOBAL||LA52_27==COMMA||(LA52_27>=QUERY && LA52_27<=RIGHT_CURLY)||(LA52_27>=RIGHT_SQUARE && LA52_27<=73)||(LA52_27>=75 && LA52_27<=81)) && (synpred7())) {s = 13;}
+                        else if ( ((LA52_27>=PACKAGE && LA52_27<=ID)||LA52_27==GLOBAL||LA52_27==COMMA||(LA52_27>=QUERY && LA52_27<=RIGHT_CURLY)||(LA52_27>=RIGHT_SQUARE && LA52_27<=74)||(LA52_27>=76 && LA52_27<=82)) && (synpred7())) {s = 12;}
 
                          
                         input.seek(index52_27);
                         if ( s>=0 ) return s;
                         break;
                     case 25 : 
-                        int LA52_12 = input.LA(1);
+                        int LA52_11 = input.LA(1);
 
                          
-                        int index52_12 = input.index();
+                        int index52_11 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_12==74) ) {s = 32;}
+                        if ( (LA52_11==75) ) {s = 32;}
 
-                        else if ( (LA52_12==DOT) ) {s = 33;}
+                        else if ( (LA52_11==DOT) ) {s = 33;}
 
-                        else if ( (LA52_12==LEFT_SQUARE) ) {s = 34;}
+                        else if ( (LA52_11==LEFT_SQUARE) ) {s = 34;}
 
-                        else if ( (LA52_12==LEFT_PAREN) ) {s = 35;}
+                        else if ( (LA52_11==LEFT_PAREN) ) {s = 35;}
 
-                        else if ( (LA52_12==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( (LA52_11==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( ((LA52_12>=PACKAGE && LA52_12<=ID)||LA52_12==GLOBAL||LA52_12==COMMA||(LA52_12>=QUERY && LA52_12<=RIGHT_CURLY)||(LA52_12>=RIGHT_SQUARE && LA52_12<=73)||(LA52_12>=75 && LA52_12<=81)) && (synpred7())) {s = 13;}
+                        else if ( ((LA52_11>=PACKAGE && LA52_11<=ID)||LA52_11==GLOBAL||LA52_11==COMMA||(LA52_11>=QUERY && LA52_11<=RIGHT_CURLY)||(LA52_11>=RIGHT_SQUARE && LA52_11<=74)||(LA52_11>=76 && LA52_11<=82)) && (synpred7())) {s = 12;}
 
                          
-                        input.seek(index52_12);
+                        input.seek(index52_11);
                         if ( s>=0 ) return s;
                         break;
                     case 26 : 
-                        int LA52_66 = input.LA(1);
+                        int LA52_4 = input.LA(1);
 
                          
-                        int index52_66 = input.index();
+                        int index52_4 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_66==LEFT_SQUARE) ) {s = 34;}
+                        if ( (LA52_4==EXISTS) ) {s = 14;}
 
-                        else if ( (LA52_66==LEFT_PAREN) ) {s = 35;}
+                        else if ( (LA52_4==NOT) ) {s = 15;}
 
-                        else if ( (LA52_66==DOT) ) {s = 33;}
+                        else if ( (LA52_4==EVAL) ) {s = 16;}
 
-                        else if ( (LA52_66==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( (LA52_4==FORALL) ) {s = 17;}
 
-                        else if ( ((LA52_66>=PACKAGE && LA52_66<=ID)||LA52_66==GLOBAL||LA52_66==COMMA||(LA52_66>=QUERY && LA52_66<=RIGHT_CURLY)||(LA52_66>=RIGHT_SQUARE && LA52_66<=81)) && (synpred7())) {s = 13;}
+                        else if ( (LA52_4==LEFT_PAREN) ) {s = 18;}
 
+                        else if ( (LA52_4==ID) ) {s = 19;}
+
+                        else if ( (LA52_4==RIGHT_PAREN) && (synpred7())) {s = 13;}
+
+                        else if ( ((LA52_4>=PACKAGE && LA52_4<=EVENT)||(LA52_4>=DOT && LA52_4<=GLOBAL)||LA52_4==COMMA||(LA52_4>=QUERY && LA52_4<=FROM)||(LA52_4>=ACCUMULATE && LA52_4<=82)) && (synpred7())) {s = 12;}
+
                          
-                        input.seek(index52_66);
+                        input.seek(index52_4);
                         if ( s>=0 ) return s;
                         break;
                     case 27 : 
-                        int LA52_22 = input.LA(1);
+                        int LA52_28 = input.LA(1);
 
                          
-                        int index52_22 = input.index();
+                        int index52_28 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_22==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        if ( (synpred7()) ) {s = 13;}
 
-                        else if ( (LA52_22==ID) ) {s = 48;}
+                        else if ( (true) ) {s = 3;}
 
-                        else if ( (LA52_22==LEFT_PAREN) ) {s = 49;}
-
-                        else if ( ((LA52_22>=PACKAGE && LA52_22<=FUNCTION)||(LA52_22>=DOT && LA52_22<=GLOBAL)||LA52_22==COMMA||(LA52_22>=QUERY && LA52_22<=81)) && (synpred7())) {s = 13;}
-
                          
-                        input.seek(index52_22);
+                        input.seek(index52_28);
                         if ( s>=0 ) return s;
                         break;
                     case 28 : 
-                        int LA52_0 = input.LA(1);
+                        int LA52_40 = input.LA(1);
 
                          
-                        int index52_0 = input.index();
+                        int index52_40 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_0==LEFT_SQUARE) && (synpred6())) {s = 1;}
+                        if ( (synpred7()) ) {s = 67;}
 
-                        else if ( (LA52_0==LEFT_PAREN) ) {s = 2;}
+                        else if ( (true) ) {s = 3;}
 
-                        else if ( ((LA52_0>=ID && LA52_0<=DOT)||(LA52_0>=COMMA && LA52_0<=RIGHT_PAREN)||LA52_0==END||(LA52_0>=OR && LA52_0<=DOUBLE_AMPER)||(LA52_0>=EXISTS && LA52_0<=FORALL)||LA52_0==INIT||LA52_0==THEN||LA52_0==72) ) {s = 3;}
-
                          
-                        input.seek(index52_0);
+                        input.seek(index52_40);
                         if ( s>=0 ) return s;
                         break;
                     case 29 : 
-                        int LA52_14 = input.LA(1);
+                        int LA52_8 = input.LA(1);
 
                          
-                        int index52_14 = input.index();
+                        int index52_8 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_14==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        if ( (LA52_8==LEFT_PAREN) ) {s = 28;}
 
-                        else if ( (LA52_14==ID) ) {s = 36;}
+                        else if ( (LA52_8==ID) ) {s = 29;}
 
-                        else if ( (LA52_14==LEFT_PAREN) ) {s = 37;}
+                        else if ( (LA52_8==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( ((LA52_14>=PACKAGE && LA52_14<=FUNCTION)||(LA52_14>=DOT && LA52_14<=GLOBAL)||LA52_14==COMMA||(LA52_14>=QUERY && LA52_14<=81)) && (synpred7())) {s = 13;}
+                        else if ( ((LA52_8>=PACKAGE && LA52_8<=EVENT)||(LA52_8>=DOT && LA52_8<=GLOBAL)||LA52_8==COMMA||(LA52_8>=QUERY && LA52_8<=82)) && (synpred7())) {s = 12;}
 
                          
-                        input.seek(index52_14);
+                        input.seek(index52_8);
                         if ( s>=0 ) return s;
                         break;
                     case 30 : 
-                        int LA52_41 = input.LA(1);
+                        int LA52_45 = input.LA(1);
 
                          
-                        int index52_41 = input.index();
+                        int index52_45 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7()) ) {s = 67;}
@@ -8228,14 +8295,14 @@
                         else if ( (true) ) {s = 3;}
 
                          
-                        input.seek(index52_41);
+                        input.seek(index52_45);
                         if ( s>=0 ) return s;
                         break;
                     case 31 : 
-                        int LA52_37 = input.LA(1);
+                        int LA52_54 = input.LA(1);
 
                          
-                        int index52_37 = input.index();
+                        int index52_54 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7()) ) {s = 67;}
@@ -8243,311 +8310,321 @@
                         else if ( (true) ) {s = 3;}
 
                          
-                        input.seek(index52_37);
+                        input.seek(index52_54);
                         if ( s>=0 ) return s;
                         break;
                     case 32 : 
-                        int LA52_64 = input.LA(1);
+                        int LA52_39 = input.LA(1);
 
                          
-                        int index52_64 = input.index();
+                        int index52_39 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_64==DOT) ) {s = 101;}
+                        if ( (LA52_39==75) ) {s = 73;}
 
-                        else if ( (LA52_64==LEFT_SQUARE) ) {s = 102;}
+                        else if ( (LA52_39==DOT) ) {s = 74;}
 
-                        else if ( (LA52_64==LEFT_PAREN) ) {s = 103;}
+                        else if ( (LA52_39==LEFT_SQUARE) ) {s = 75;}
 
-                        else if ( (LA52_64==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( (LA52_39==LEFT_PAREN) ) {s = 76;}
 
-                        else if ( ((LA52_64>=PACKAGE && LA52_64<=ID)||LA52_64==GLOBAL||LA52_64==COMMA||(LA52_64>=QUERY && LA52_64<=RIGHT_CURLY)||(LA52_64>=RIGHT_SQUARE && LA52_64<=81)) && (synpred7())) {s = 13;}
+                        else if ( (LA52_39==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
+                        else if ( ((LA52_39>=PACKAGE && LA52_39<=ID)||LA52_39==GLOBAL||LA52_39==COMMA||(LA52_39>=QUERY && LA52_39<=RIGHT_CURLY)||(LA52_39>=RIGHT_SQUARE && LA52_39<=74)||(LA52_39>=76 && LA52_39<=82)) && (synpred7())) {s = 12;}
+
                          
-                        input.seek(index52_64);
+                        input.seek(index52_39);
                         if ( s>=0 ) return s;
                         break;
                     case 33 : 
-                        int LA52_5 = input.LA(1);
+                        int LA52_37 = input.LA(1);
 
                          
-                        int index52_5 = input.index();
+                        int index52_37 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_5==LEFT_PAREN) ) {s = 20;}
+                        if ( (LA52_37==75) ) {s = 69;}
 
-                        else if ( (LA52_5==EXISTS) ) {s = 21;}
+                        else if ( (LA52_37==DOT) ) {s = 70;}
 
-                        else if ( (LA52_5==NOT) ) {s = 22;}
+                        else if ( (LA52_37==LEFT_SQUARE) ) {s = 71;}
 
-                        else if ( (LA52_5==EVAL) ) {s = 23;}
+                        else if ( (LA52_37==LEFT_PAREN) ) {s = 72;}
 
-                        else if ( (LA52_5==FORALL) ) {s = 24;}
+                        else if ( (LA52_37==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( (LA52_5==ID) ) {s = 25;}
+                        else if ( ((LA52_37>=PACKAGE && LA52_37<=ID)||LA52_37==GLOBAL||LA52_37==COMMA||(LA52_37>=QUERY && LA52_37<=RIGHT_CURLY)||(LA52_37>=RIGHT_SQUARE && LA52_37<=74)||(LA52_37>=76 && LA52_37<=82)) && (synpred7())) {s = 12;}
 
-                        else if ( (LA52_5==RIGHT_PAREN) && (synpred7())) {s = 8;}
-
-                        else if ( ((LA52_5>=PACKAGE && LA52_5<=FUNCTION)||(LA52_5>=DOT && LA52_5<=GLOBAL)||LA52_5==COMMA||(LA52_5>=QUERY && LA52_5<=FROM)||(LA52_5>=ACCUMULATE && LA52_5<=81)) && (synpred7())) {s = 13;}
-
                          
-                        input.seek(index52_5);
+                        input.seek(index52_37);
                         if ( s>=0 ) return s;
                         break;
                     case 34 : 
-                        int LA52_33 = input.LA(1);
+                        int LA52_19 = input.LA(1);
 
                          
-                        int index52_33 = input.index();
+                        int index52_19 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((LA52_33>=PACKAGE && LA52_33<=ID)||LA52_33==GLOBAL||(LA52_33>=QUERY && LA52_33<=ATTRIBUTES)||LA52_33==ENABLED||LA52_33==SALIENCE||(LA52_33>=DURATION && LA52_33<=DIALECT)||LA52_33==FROM||(LA52_33>=INIT && LA52_33<=RESULT)||(LA52_33>=CONTAINS && LA52_33<=IN)||LA52_33==THEN) ) {s = 66;}
+                        if ( (LA52_19==75) ) {s = 42;}
 
-                        else if ( (LA52_33==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( (LA52_19==DOT) ) {s = 43;}
 
-                        else if ( (LA52_33==DOT||LA52_33==COMMA||(LA52_33>=DATE_EFFECTIVE && LA52_33<=DATE_EXPIRES)||LA52_33==BOOL||(LA52_33>=INT && LA52_33<=AGENDA_GROUP)||(LA52_33>=LOCK_ON_ACTIVE && LA52_33<=DOUBLE_AMPER)||(LA52_33>=EXISTS && LA52_33<=ACCUMULATE)||LA52_33==COLLECT||(LA52_33>=FLOAT && LA52_33<=RIGHT_SQUARE)||(LA52_33>=EOL && LA52_33<=81)) && (synpred7())) {s = 13;}
+                        else if ( (LA52_19==LEFT_SQUARE) ) {s = 44;}
 
-                        else if ( (LA52_33==LEFT_PAREN) && (synpred7())) {s = 67;}
+                        else if ( (LA52_19==LEFT_PAREN) ) {s = 45;}
 
+                        else if ( (LA52_19==RIGHT_PAREN) && (synpred7())) {s = 13;}
+
+                        else if ( ((LA52_19>=PACKAGE && LA52_19<=ID)||LA52_19==GLOBAL||LA52_19==COMMA||(LA52_19>=QUERY && LA52_19<=RIGHT_CURLY)||(LA52_19>=RIGHT_SQUARE && LA52_19<=74)||(LA52_19>=76 && LA52_19<=82)) && (synpred7())) {s = 12;}
+
                          
-                        input.seek(index52_33);
+                        input.seek(index52_19);
                         if ( s>=0 ) return s;
                         break;
                     case 35 : 
-                        int LA52_57 = input.LA(1);
+                        int LA52_0 = input.LA(1);
 
                          
-                        int index52_57 = input.index();
+                        int index52_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((LA52_57>=PACKAGE && LA52_57<=ID)||LA52_57==GLOBAL||(LA52_57>=QUERY && LA52_57<=ATTRIBUTES)||LA52_57==ENABLED||LA52_57==SALIENCE||(LA52_57>=DURATION && LA52_57<=DIALECT)||LA52_57==FROM||(LA52_57>=INIT && LA52_57<=RESULT)||(LA52_57>=CONTAINS && LA52_57<=IN)||LA52_57==THEN) ) {s = 95;}
+                        if ( (LA52_0==LEFT_SQUARE) && (synpred6())) {s = 1;}
 
-                        else if ( (LA52_57==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( (LA52_0==LEFT_PAREN) ) {s = 2;}
 
-                        else if ( (LA52_57==DOT||LA52_57==COMMA||(LA52_57>=DATE_EFFECTIVE && LA52_57<=DATE_EXPIRES)||LA52_57==BOOL||(LA52_57>=INT && LA52_57<=AGENDA_GROUP)||(LA52_57>=LOCK_ON_ACTIVE && LA52_57<=DOUBLE_AMPER)||(LA52_57>=EXISTS && LA52_57<=ACCUMULATE)||LA52_57==COLLECT||(LA52_57>=FLOAT && LA52_57<=RIGHT_SQUARE)||(LA52_57>=EOL && LA52_57<=81)) && (synpred7())) {s = 13;}
+                        else if ( ((LA52_0>=ID && LA52_0<=DOT)||(LA52_0>=COMMA && LA52_0<=RIGHT_PAREN)||LA52_0==END||(LA52_0>=OR && LA52_0<=DOUBLE_AMPER)||(LA52_0>=EXISTS && LA52_0<=FORALL)||LA52_0==INIT||LA52_0==THEN||LA52_0==73) ) {s = 3;}
 
-                        else if ( (LA52_57==LEFT_PAREN) && (synpred7())) {s = 67;}
-
                          
-                        input.seek(index52_57);
+                        input.seek(index52_0);
                         if ( s>=0 ) return s;
                         break;
                     case 36 : 
-                        int LA52_61 = input.LA(1);
+                        int LA52_31 = input.LA(1);
 
                          
-                        int index52_61 = input.index();
+                        int index52_31 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_61==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        if ( (synpred7()) ) {s = 13;}
 
-                        else if ( ((LA52_61>=PACKAGE && LA52_61<=ID)||LA52_61==GLOBAL||(LA52_61>=QUERY && LA52_61<=ATTRIBUTES)||LA52_61==ENABLED||LA52_61==SALIENCE||(LA52_61>=DURATION && LA52_61<=DIALECT)||LA52_61==FROM||(LA52_61>=INIT && LA52_61<=RESULT)||(LA52_61>=CONTAINS && LA52_61<=IN)||LA52_61==THEN) ) {s = 99;}
+                        else if ( (true) ) {s = 3;}
 
-                        else if ( (LA52_61==LEFT_PAREN) && (synpred7())) {s = 67;}
-
-                        else if ( (LA52_61==DOT||LA52_61==COMMA||(LA52_61>=DATE_EFFECTIVE && LA52_61<=DATE_EXPIRES)||LA52_61==BOOL||(LA52_61>=INT && LA52_61<=AGENDA_GROUP)||(LA52_61>=LOCK_ON_ACTIVE && LA52_61<=DOUBLE_AMPER)||(LA52_61>=EXISTS && LA52_61<=ACCUMULATE)||LA52_61==COLLECT||(LA52_61>=FLOAT && LA52_61<=RIGHT_SQUARE)||(LA52_61>=EOL && LA52_61<=81)) && (synpred7())) {s = 13;}
-
                          
-                        input.seek(index52_61);
+                        input.seek(index52_31);
                         if ( s>=0 ) return s;
                         break;
                     case 37 : 
-                        int LA52_39 = input.LA(1);
+                        int LA52_20 = input.LA(1);
 
                          
-                        int index52_39 = input.index();
+                        int index52_20 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_39==74) ) {s = 73;}
+                        if ( (synpred7()) ) {s = 13;}
 
-                        else if ( (LA52_39==DOT) ) {s = 74;}
+                        else if ( (true) ) {s = 3;}
 
-                        else if ( (LA52_39==LEFT_SQUARE) ) {s = 75;}
-
-                        else if ( (LA52_39==LEFT_PAREN) ) {s = 76;}
-
-                        else if ( (LA52_39==RIGHT_PAREN) && (synpred7())) {s = 8;}
-
-                        else if ( ((LA52_39>=PACKAGE && LA52_39<=ID)||LA52_39==GLOBAL||LA52_39==COMMA||(LA52_39>=QUERY && LA52_39<=RIGHT_CURLY)||(LA52_39>=RIGHT_SQUARE && LA52_39<=73)||(LA52_39>=75 && LA52_39<=81)) && (synpred7())) {s = 13;}
-
                          
-                        input.seek(index52_39);
+                        input.seek(index52_20);
                         if ( s>=0 ) return s;
                         break;
                     case 38 : 
-                        int LA52_36 = input.LA(1);
+                        int LA52_26 = input.LA(1);
 
                          
-                        int index52_36 = input.index();
+                        int index52_26 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_36==74) ) {s = 69;}
+                        if ( (synpred7()) ) {s = 13;}
 
-                        else if ( (LA52_36==DOT) ) {s = 70;}
+                        else if ( (true) ) {s = 3;}
 
-                        else if ( (LA52_36==LEFT_SQUARE) ) {s = 71;}
-
-                        else if ( (LA52_36==LEFT_PAREN) ) {s = 72;}
-
-                        else if ( (LA52_36==RIGHT_PAREN) && (synpred7())) {s = 8;}
-
-                        else if ( ((LA52_36>=PACKAGE && LA52_36<=ID)||LA52_36==GLOBAL||LA52_36==COMMA||(LA52_36>=QUERY && LA52_36<=RIGHT_CURLY)||(LA52_36>=RIGHT_SQUARE && LA52_36<=73)||(LA52_36>=75 && LA52_36<=81)) && (synpred7())) {s = 13;}
-
                          
-                        input.seek(index52_36);
+                        input.seek(index52_26);
                         if ( s>=0 ) return s;
                         break;
                     case 39 : 
-                        int LA52_19 = input.LA(1);
+                        int LA52_2 = input.LA(1);
 
                          
-                        int index52_19 = input.index();
+                        int index52_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_19==74) ) {s = 42;}
+                        if ( (LA52_2==AND) ) {s = 4;}
 
-                        else if ( (LA52_19==DOT) ) {s = 43;}
+                        else if ( (LA52_2==OR) ) {s = 5;}
 
-                        else if ( (LA52_19==LEFT_SQUARE) ) {s = 44;}
+                        else if ( (LA52_2==LEFT_PAREN) ) {s = 6;}
 
-                        else if ( (LA52_19==LEFT_PAREN) ) {s = 45;}
+                        else if ( (LA52_2==EXISTS) ) {s = 7;}
 
-                        else if ( (LA52_19==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( (LA52_2==NOT) ) {s = 8;}
 
-                        else if ( ((LA52_19>=PACKAGE && LA52_19<=ID)||LA52_19==GLOBAL||LA52_19==COMMA||(LA52_19>=QUERY && LA52_19<=RIGHT_CURLY)||(LA52_19>=RIGHT_SQUARE && LA52_19<=73)||(LA52_19>=75 && LA52_19<=81)) && (synpred7())) {s = 13;}
+                        else if ( (LA52_2==EVAL) ) {s = 9;}
 
+                        else if ( (LA52_2==FORALL) ) {s = 10;}
+
+                        else if ( (LA52_2==ID) ) {s = 11;}
+
+                        else if ( ((LA52_2>=PACKAGE && LA52_2<=EVENT)||(LA52_2>=DOT && LA52_2<=GLOBAL)||LA52_2==COMMA||(LA52_2>=QUERY && LA52_2<=LOCK_ON_ACTIVE)||LA52_2==DOUBLE_PIPE||(LA52_2>=DOUBLE_AMPER && LA52_2<=FROM)||(LA52_2>=ACCUMULATE && LA52_2<=82)) && (synpred7())) {s = 12;}
+
+                        else if ( (LA52_2==RIGHT_PAREN) && (synpred7())) {s = 13;}
+
                          
-                        input.seek(index52_19);
+                        input.seek(index52_2);
                         if ( s>=0 ) return s;
                         break;
                     case 40 : 
-                        int LA52_54 = input.LA(1);
+                        int LA52_43 = input.LA(1);
 
                          
-                        int index52_54 = input.index();
+                        int index52_43 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_54==RIGHT_SQUARE) ) {s = 92;}
+                        if ( ((LA52_43>=PACKAGE && LA52_43<=ID)||LA52_43==GLOBAL||(LA52_43>=QUERY && LA52_43<=ATTRIBUTES)||LA52_43==ENABLED||LA52_43==SALIENCE||(LA52_43>=DURATION && LA52_43<=DIALECT)||LA52_43==FROM||(LA52_43>=INIT && LA52_43<=RESULT)||(LA52_43>=CONTAINS && LA52_43<=IN)||LA52_43==THEN) ) {s = 79;}
 
-                        else if ( (LA52_54==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( (LA52_43==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( ((LA52_54>=PACKAGE && LA52_54<=GLOBAL)||LA52_54==COMMA||(LA52_54>=QUERY && LA52_54<=LEFT_SQUARE)||(LA52_54>=THEN && LA52_54<=81)) && (synpred7())) {s = 13;}
+                        else if ( (LA52_43==DOT||LA52_43==COMMA||(LA52_43>=DATE_EFFECTIVE && LA52_43<=DATE_EXPIRES)||LA52_43==BOOL||(LA52_43>=INT && LA52_43<=AGENDA_GROUP)||(LA52_43>=LOCK_ON_ACTIVE && LA52_43<=DOUBLE_AMPER)||(LA52_43>=EXISTS && LA52_43<=ACCUMULATE)||LA52_43==COLLECT||(LA52_43>=FLOAT && LA52_43<=RIGHT_SQUARE)||(LA52_43>=EOL && LA52_43<=82)) && (synpred7())) {s = 12;}
 
-                        else if ( (LA52_54==LEFT_PAREN) && (synpred7())) {s = 67;}
+                        else if ( (LA52_43==LEFT_PAREN) && (synpred7())) {s = 67;}
 
                          
-                        input.seek(index52_54);
+                        input.seek(index52_43);
                         if ( s>=0 ) return s;
                         break;
                     case 41 : 
-                        int LA52_34 = input.LA(1);
+                        int LA52_32 = input.LA(1);
 
                          
-                        int index52_34 = input.index();
+                        int index52_32 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_34==RIGHT_SQUARE) ) {s = 68;}
+                        if ( (LA52_32==ID) ) {s = 64;}
 
-                        else if ( (LA52_34==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( (LA52_32==LEFT_PAREN) ) {s = 65;}
 
-                        else if ( ((LA52_34>=PACKAGE && LA52_34<=GLOBAL)||LA52_34==COMMA||(LA52_34>=QUERY && LA52_34<=LEFT_SQUARE)||(LA52_34>=THEN && LA52_34<=81)) && (synpred7())) {s = 13;}
+                        else if ( (LA52_32==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( (LA52_34==LEFT_PAREN) && (synpred7())) {s = 67;}
+                        else if ( ((LA52_32>=PACKAGE && LA52_32<=EVENT)||(LA52_32>=DOT && LA52_32<=GLOBAL)||LA52_32==COMMA||(LA52_32>=QUERY && LA52_32<=82)) && (synpred7())) {s = 12;}
 
                          
-                        input.seek(index52_34);
+                        input.seek(index52_32);
                         if ( s>=0 ) return s;
                         break;
                     case 42 : 
-                        int LA52_58 = input.LA(1);
+                        int LA52_56 = input.LA(1);
 
                          
-                        int index52_58 = input.index();
+                        int index52_56 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_58==RIGHT_SQUARE) ) {s = 96;}
+                        if ( (LA52_56==ID) ) {s = 93;}
 
-                        else if ( (LA52_58==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( (LA52_56==LEFT_PAREN) ) {s = 94;}
 
-                        else if ( ((LA52_58>=PACKAGE && LA52_58<=GLOBAL)||LA52_58==COMMA||(LA52_58>=QUERY && LA52_58<=LEFT_SQUARE)||(LA52_58>=THEN && LA52_58<=81)) && (synpred7())) {s = 13;}
+                        else if ( (LA52_56==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( (LA52_58==LEFT_PAREN) && (synpred7())) {s = 67;}
+                        else if ( ((LA52_56>=PACKAGE && LA52_56<=EVENT)||(LA52_56>=DOT && LA52_56<=GLOBAL)||LA52_56==COMMA||(LA52_56>=QUERY && LA52_56<=82)) && (synpred7())) {s = 12;}
 
                          
-                        input.seek(index52_58);
+                        input.seek(index52_56);
                         if ( s>=0 ) return s;
                         break;
                     case 43 : 
-                        int LA52_62 = input.LA(1);
+                        int LA52_60 = input.LA(1);
 
                          
-                        int index52_62 = input.index();
+                        int index52_60 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_62==RIGHT_SQUARE) ) {s = 100;}
+                        if ( (LA52_60==ID) ) {s = 97;}
 
-                        else if ( (LA52_62==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( (LA52_60==LEFT_PAREN) ) {s = 98;}
 
-                        else if ( ((LA52_62>=PACKAGE && LA52_62<=GLOBAL)||LA52_62==COMMA||(LA52_62>=QUERY && LA52_62<=LEFT_SQUARE)||(LA52_62>=THEN && LA52_62<=81)) && (synpred7())) {s = 13;}
+                        else if ( (LA52_60==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( (LA52_62==LEFT_PAREN) && (synpred7())) {s = 67;}
+                        else if ( ((LA52_60>=PACKAGE && LA52_60<=EVENT)||(LA52_60>=DOT && LA52_60<=GLOBAL)||LA52_60==COMMA||(LA52_60>=QUERY && LA52_60<=82)) && (synpred7())) {s = 12;}
 
                          
-                        input.seek(index52_62);
+                        input.seek(index52_60);
                         if ( s>=0 ) return s;
                         break;
                     case 44 : 
-                        int LA52_17 = input.LA(1);
+                        int LA52_47 = input.LA(1);
 
                          
-                        int index52_17 = input.index();
+                        int index52_47 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_17==LEFT_PAREN) ) {s = 41;}
+                        if ( (LA52_47==75) ) {s = 81;}
 
-                        else if ( (LA52_17==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( (LA52_47==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( ((LA52_17>=PACKAGE && LA52_17<=GLOBAL)||LA52_17==COMMA||(LA52_17>=QUERY && LA52_17<=81)) && (synpred7())) {s = 13;}
+                        else if ( (LA52_47==DOT) ) {s = 82;}
 
+                        else if ( (LA52_47==LEFT_PAREN) ) {s = 83;}
+
+                        else if ( (LA52_47==LEFT_SQUARE) ) {s = 84;}
+
+                        else if ( ((LA52_47>=PACKAGE && LA52_47<=ID)||LA52_47==GLOBAL||LA52_47==COMMA||(LA52_47>=QUERY && LA52_47<=RIGHT_CURLY)||(LA52_47>=RIGHT_SQUARE && LA52_47<=74)||(LA52_47>=76 && LA52_47<=82)) && (synpred7())) {s = 12;}
+
                          
-                        input.seek(index52_17);
+                        input.seek(index52_47);
                         if ( s>=0 ) return s;
                         break;
                     case 45 : 
-                        int LA52_50 = input.LA(1);
+                        int LA52_25 = input.LA(1);
 
                          
-                        int index52_50 = input.index();
+                        int index52_25 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 67;}
+                        if ( (LA52_25==75) ) {s = 52;}
 
-                        else if ( (true) ) {s = 3;}
+                        else if ( (LA52_25==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
+                        else if ( (LA52_25==DOT) ) {s = 53;}
+
+                        else if ( (LA52_25==LEFT_PAREN) ) {s = 54;}
+
+                        else if ( (LA52_25==LEFT_SQUARE) ) {s = 55;}
+
+                        else if ( ((LA52_25>=PACKAGE && LA52_25<=ID)||LA52_25==GLOBAL||LA52_25==COMMA||(LA52_25>=QUERY && LA52_25<=RIGHT_CURLY)||(LA52_25>=RIGHT_SQUARE && LA52_25<=74)||(LA52_25>=76 && LA52_25<=82)) && (synpred7())) {s = 12;}
+
                          
-                        input.seek(index52_50);
+                        input.seek(index52_25);
                         if ( s>=0 ) return s;
                         break;
                     case 46 : 
-                        int LA52_28 = input.LA(1);
+                        int LA52_49 = input.LA(1);
 
                          
-                        int index52_28 = input.index();
+                        int index52_49 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 13;}
+                        if ( (LA52_49==75) ) {s = 85;}
 
-                        else if ( (true) ) {s = 3;}
+                        else if ( (LA52_49==DOT) ) {s = 86;}
 
+                        else if ( (LA52_49==LEFT_SQUARE) ) {s = 87;}
+
+                        else if ( (LA52_49==LEFT_PAREN) ) {s = 88;}
+
+                        else if ( (LA52_49==RIGHT_PAREN) && (synpred7())) {s = 13;}
+
+                        else if ( ((LA52_49>=PACKAGE && LA52_49<=ID)||LA52_49==GLOBAL||LA52_49==COMMA||(LA52_49>=QUERY && LA52_49<=RIGHT_CURLY)||(LA52_49>=RIGHT_SQUARE && LA52_49<=74)||(LA52_49>=76 && LA52_49<=82)) && (synpred7())) {s = 12;}
+
                          
-                        input.seek(index52_28);
+                        input.seek(index52_49);
                         if ( s>=0 ) return s;
                         break;
                     case 47 : 
-                        int LA52_45 = input.LA(1);
+                        int LA52_46 = input.LA(1);
 
                          
-                        int index52_45 = input.index();
+                        int index52_46 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7()) ) {s = 67;}
@@ -8555,75 +8632,61 @@
                         else if ( (true) ) {s = 3;}
 
                          
-                        input.seek(index52_45);
+                        input.seek(index52_46);
                         if ( s>=0 ) return s;
                         break;
                     case 48 : 
-                        int LA52_7 = input.LA(1);
+                        int LA52_35 = input.LA(1);
 
                          
-                        int index52_7 = input.index();
+                        int index52_35 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 13;}
+                        if ( (synpred7()) ) {s = 67;}
 
                         else if ( (true) ) {s = 3;}
 
                          
-                        input.seek(index52_7);
+                        input.seek(index52_35);
                         if ( s>=0 ) return s;
                         break;
                     case 49 : 
-                        int LA52_18 = input.LA(1);
+                        int LA52_23 = input.LA(1);
 
                          
-                        int index52_18 = input.index();
+                        int index52_23 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 13;}
+                        if ( (LA52_23==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( (true) ) {s = 3;}
+                        else if ( ((LA52_23>=PACKAGE && LA52_23<=GLOBAL)||LA52_23==COMMA||(LA52_23>=QUERY && LA52_23<=82)) && (synpred7())) {s = 12;}
 
+                        else if ( (LA52_23==LEFT_PAREN) ) {s = 50;}
+
                          
-                        input.seek(index52_18);
+                        input.seek(index52_23);
                         if ( s>=0 ) return s;
                         break;
                     case 50 : 
-                        int LA52_2 = input.LA(1);
+                        int LA52_63 = input.LA(1);
 
                          
-                        int index52_2 = input.index();
+                        int index52_63 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_2==AND) ) {s = 4;}
+                        if ( (synpred7()) ) {s = 67;}
 
-                        else if ( (LA52_2==OR) ) {s = 5;}
+                        else if ( (true) ) {s = 3;}
 
-                        else if ( (LA52_2==EXISTS) ) {s = 6;}
-
-                        else if ( (LA52_2==LEFT_PAREN) ) {s = 7;}
-
-                        else if ( (LA52_2==RIGHT_PAREN) && (synpred7())) {s = 8;}
-
-                        else if ( (LA52_2==NOT) ) {s = 9;}
-
-                        else if ( (LA52_2==EVAL) ) {s = 10;}
-
-                        else if ( (LA52_2==FORALL) ) {s = 11;}
-
-                        else if ( (LA52_2==ID) ) {s = 12;}
-
-                        else if ( ((LA52_2>=PACKAGE && LA52_2<=FUNCTION)||(LA52_2>=DOT && LA52_2<=GLOBAL)||LA52_2==COMMA||(LA52_2>=QUERY && LA52_2<=LOCK_ON_ACTIVE)||LA52_2==DOUBLE_PIPE||(LA52_2>=DOUBLE_AMPER && LA52_2<=FROM)||(LA52_2>=ACCUMULATE && LA52_2<=81)) && (synpred7())) {s = 13;}
-
                          
-                        input.seek(index52_2);
+                        input.seek(index52_63);
                         if ( s>=0 ) return s;
                         break;
                     case 51 : 
-                        int LA52_47 = input.LA(1);
+                        int LA52_50 = input.LA(1);
 
                          
-                        int index52_47 = input.index();
+                        int index52_50 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7()) ) {s = 67;}
@@ -8631,78 +8694,80 @@
                         else if ( (true) ) {s = 3;}
 
                          
-                        input.seek(index52_47);
+                        input.seek(index52_50);
                         if ( s>=0 ) return s;
                         break;
                     case 52 : 
-                        int LA52_11 = input.LA(1);
+                        int LA52_22 = input.LA(1);
 
                          
-                        int index52_11 = input.index();
+                        int index52_22 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_11==LEFT_PAREN) ) {s = 31;}
+                        if ( (LA52_22==LEFT_PAREN) ) {s = 48;}
 
-                        else if ( (LA52_11==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( (LA52_22==ID) ) {s = 49;}
 
-                        else if ( ((LA52_11>=PACKAGE && LA52_11<=GLOBAL)||LA52_11==COMMA||(LA52_11>=QUERY && LA52_11<=81)) && (synpred7())) {s = 13;}
+                        else if ( (LA52_22==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
+                        else if ( ((LA52_22>=PACKAGE && LA52_22<=EVENT)||(LA52_22>=DOT && LA52_22<=GLOBAL)||LA52_22==COMMA||(LA52_22>=QUERY && LA52_22<=82)) && (synpred7())) {s = 12;}
+
                          
-                        input.seek(index52_11);
+                        input.seek(index52_22);
                         if ( s>=0 ) return s;
                         break;
                     case 53 : 
-                        int LA52_16 = input.LA(1);
+                        int LA52_36 = input.LA(1);
 
                          
-                        int index52_16 = input.index();
+                        int index52_36 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_16==LEFT_PAREN) ) {s = 40;}
+                        if ( (synpred7()) ) {s = 67;}
 
-                        else if ( (LA52_16==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( (true) ) {s = 3;}
 
-                        else if ( ((LA52_16>=PACKAGE && LA52_16<=GLOBAL)||LA52_16==COMMA||(LA52_16>=QUERY && LA52_16<=81)) && (synpred7())) {s = 13;}
-
                          
-                        input.seek(index52_16);
+                        input.seek(index52_36);
                         if ( s>=0 ) return s;
                         break;
                     case 54 : 
-                        int LA52_26 = input.LA(1);
+                        int LA52_41 = input.LA(1);
 
                          
-                        int index52_26 = input.index();
+                        int index52_41 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 13;}
+                        if ( (synpred7()) ) {s = 67;}
 
                         else if ( (true) ) {s = 3;}
 
                          
-                        input.seek(index52_26);
+                        input.seek(index52_41);
                         if ( s>=0 ) return s;
                         break;
                     case 55 : 
-                        int LA52_38 = input.LA(1);
+                        int LA52_9 = input.LA(1);
 
                          
-                        int index52_38 = input.index();
+                        int index52_9 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 67;}
+                        if ( (LA52_9==LEFT_PAREN) ) {s = 30;}
 
-                        else if ( (true) ) {s = 3;}
+                        else if ( (LA52_9==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
+                        else if ( ((LA52_9>=PACKAGE && LA52_9<=GLOBAL)||LA52_9==COMMA||(LA52_9>=QUERY && LA52_9<=82)) && (synpred7())) {s = 12;}
+
                          
-                        input.seek(index52_38);
+                        input.seek(index52_9);
                         if ( s>=0 ) return s;
                         break;
                     case 56 : 
-                        int LA52_51 = input.LA(1);
+                        int LA52_65 = input.LA(1);
 
                          
-                        int index52_51 = input.index();
+                        int index52_65 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7()) ) {s = 67;}
@@ -8710,52 +8775,46 @@
                         else if ( (true) ) {s = 3;}
 
                          
-                        input.seek(index52_51);
+                        input.seek(index52_65);
                         if ( s>=0 ) return s;
                         break;
                     case 57 : 
-                        int LA52_53 = input.LA(1);
+                        int LA52_16 = input.LA(1);
 
                          
-                        int index52_53 = input.index();
+                        int index52_16 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((LA52_53>=PACKAGE && LA52_53<=ID)||LA52_53==GLOBAL||(LA52_53>=QUERY && LA52_53<=ATTRIBUTES)||LA52_53==ENABLED||LA52_53==SALIENCE||(LA52_53>=DURATION && LA52_53<=DIALECT)||LA52_53==FROM||(LA52_53>=INIT && LA52_53<=RESULT)||(LA52_53>=CONTAINS && LA52_53<=IN)||LA52_53==THEN) ) {s = 91;}
+                        if ( (LA52_16==LEFT_PAREN) ) {s = 40;}
 
-                        else if ( (LA52_53==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( (LA52_16==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
-                        else if ( (LA52_53==DOT||LA52_53==COMMA||(LA52_53>=DATE_EFFECTIVE && LA52_53<=DATE_EXPIRES)||LA52_53==BOOL||(LA52_53>=INT && LA52_53<=AGENDA_GROUP)||(LA52_53>=LOCK_ON_ACTIVE && LA52_53<=DOUBLE_AMPER)||(LA52_53>=EXISTS && LA52_53<=ACCUMULATE)||LA52_53==COLLECT||(LA52_53>=FLOAT && LA52_53<=RIGHT_SQUARE)||(LA52_53>=EOL && LA52_53<=81)) && (synpred7())) {s = 13;}
+                        else if ( ((LA52_16>=PACKAGE && LA52_16<=GLOBAL)||LA52_16==COMMA||(LA52_16>=QUERY && LA52_16<=82)) && (synpred7())) {s = 12;}
 
-                        else if ( (LA52_53==LEFT_PAREN) && (synpred7())) {s = 67;}
-
                          
-                        input.seek(index52_53);
+                        input.seek(index52_16);
                         if ( s>=0 ) return s;
                         break;
                     case 58 : 
-                        int LA52_15 = input.LA(1);
+                        int LA52_51 = input.LA(1);
 
                          
-                        int index52_15 = input.index();
+                        int index52_51 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_15==LEFT_PAREN) ) {s = 38;}
+                        if ( (synpred7()) ) {s = 67;}
 
-                        else if ( (LA52_15==ID) ) {s = 39;}
+                        else if ( (true) ) {s = 3;}
 
-                        else if ( (LA52_15==RIGHT_PAREN) && (synpred7())) {s = 8;}
-
-                        else if ( ((LA52_15>=PACKAGE && LA52_15<=FUNCTION)||(LA52_15>=DOT && LA52_15<=GLOBAL)||LA52_15==COMMA||(LA52_15>=QUERY && LA52_15<=81)) && (synpred7())) {s = 13;}
-
                          
-                        input.seek(index52_15);
+                        input.seek(index52_51);
                         if ( s>=0 ) return s;
                         break;
                     case 59 : 
-                        int LA52_31 = input.LA(1);
+                        int LA52_6 = input.LA(1);
 
                          
-                        int index52_31 = input.index();
+                        int index52_6 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7()) ) {s = 13;}
@@ -8763,54 +8822,64 @@
                         else if ( (true) ) {s = 3;}
 
                          
-                        input.seek(index52_31);
+                        input.seek(index52_6);
                         if ( s>=0 ) return s;
                         break;
                     case 60 : 
-                        int LA52_24 = input.LA(1);
+                        int LA52_15 = input.LA(1);
 
                          
-                        int index52_24 = input.index();
+                        int index52_15 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_24==LEFT_PAREN) ) {s = 51;}
+                        if ( (LA52_15==LEFT_PAREN) ) {s = 38;}
 
-                        else if ( (LA52_24==RIGHT_PAREN) && (synpred7())) {s = 8;}
+                        else if ( (LA52_15==ID) ) {s = 39;}
 
-                        else if ( ((LA52_24>=PACKAGE && LA52_24<=GLOBAL)||LA52_24==COMMA||(LA52_24>=QUERY && LA52_24<=81)) && (synpred7())) {s = 13;}
+                        else if ( (LA52_15==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
+                        else if ( ((LA52_15>=PACKAGE && LA52_15<=EVENT)||(LA52_15>=DOT && LA52_15<=GLOBAL)||LA52_15==COMMA||(LA52_15>=QUERY && LA52_15<=82)) && (synpred7())) {s = 12;}
+
                          
-                        input.seek(index52_24);
+                        input.seek(index52_15);
                         if ( s>=0 ) return s;
                         break;
                     case 61 : 
-                        int LA52_40 = input.LA(1);
+                        int LA52_14 = input.LA(1);
 
                          
-                        int index52_40 = input.index();
+                        int index52_14 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 67;}
+                        if ( (LA52_14==LEFT_PAREN) ) {s = 36;}
 
-                        else if ( (true) ) {s = 3;}
+                        else if ( (LA52_14==ID) ) {s = 37;}
 
+                        else if ( (LA52_14==RIGHT_PAREN) && (synpred7())) {s = 13;}
+
+                        else if ( ((LA52_14>=PACKAGE && LA52_14<=EVENT)||(LA52_14>=DOT && LA52_14<=GLOBAL)||LA52_14==COMMA||(LA52_14>=QUERY && LA52_14<=82)) && (synpred7())) {s = 12;}
+
                          
-                        input.seek(index52_40);
+                        input.seek(index52_14);
                         if ( s>=0 ) return s;
                         break;
                     case 62 : 
-                        int LA52_30 = input.LA(1);
+                        int LA52_55 = input.LA(1);
 
                          
-                        int index52_30 = input.index();
+                        int index52_55 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 13;}
+                        if ( (LA52_55==RIGHT_SQUARE) ) {s = 92;}
 
-                        else if ( (true) ) {s = 3;}
+                        else if ( (LA52_55==RIGHT_PAREN) && (synpred7())) {s = 13;}
 
+                        else if ( ((LA52_55>=PACKAGE && LA52_55<=GLOBAL)||LA52_55==COMMA||(LA52_55>=QUERY && LA52_55<=LEFT_SQUARE)||(LA52_55>=THEN && LA52_55<=82)) && (synpred7())) {s = 12;}
+
+                        else if ( (LA52_55==LEFT_PAREN) && (synpred7())) {s = 67;}
+
                          
-                        input.seek(index52_30);
+                        input.seek(index52_55);
                         if ( s>=0 ) return s;
                         break;
             }
@@ -8826,9 +8895,9 @@
     static final String DFA64_eofS =
         "\23\uffff";
     static final String DFA64_minS =
-        "\1\13\1\uffff\1\4\1\10\1\0\1\4\1\uffff\1\4\13\0";
+        "\1\14\1\uffff\1\4\1\11\1\0\1\4\1\uffff\1\4\13\0";
     static final String DFA64_maxS =
-        "\1\45\1\uffff\2\121\1\0\1\121\1\uffff\1\121\13\0";
+        "\1\46\1\uffff\2\122\1\0\1\122\1\uffff\1\122\13\0";
     static final String DFA64_acceptS =
         "\1\uffff\1\2\4\uffff\1\1\14\uffff";
     static final String DFA64_specialS =
@@ -8836,17 +8905,17 @@
     static final String[] DFA64_transitionS = {
             "\2\1\26\uffff\1\2\1\uffff\1\1",
             "",
-            "\4\1\1\uffff\1\1\1\4\2\uffff\6\1\3\uffff\1\1\1\uffff\1\1\6\uffff"+
+            "\5\1\1\uffff\1\1\1\4\2\uffff\6\1\3\uffff\1\1\1\uffff\1\1\6\uffff"+
             "\2\1\5\uffff\1\1\1\uffff\1\6\1\1\2\uffff\4\1\1\uffff\1\5\1\7"+
             "\1\10\1\11\1\12\1\3\6\uffff\1\1\16\uffff\6\6",
             "\1\1\1\uffff\1\13\35\uffff\1\1\10\uffff\6\1\4\uffff\1\1\20\uffff"+
             "\6\1",
             "\1\uffff",
-            "\4\6\1\1\1\6\1\22\2\uffff\6\6\1\uffff\1\6\1\uffff\4\6\5\uffff"+
+            "\5\6\1\1\1\6\1\22\2\uffff\6\6\1\uffff\1\6\1\uffff\4\6\5\uffff"+
             "\2\6\5\uffff\1\6\1\uffff\1\1\3\uffff\4\6\1\uffff\1\15\1\16\1"+
             "\17\1\20\1\21\1\14\2\6\2\uffff\1\1\1\uffff\1\6\16\uffff\6\1",
             "",
-            "\4\6\1\1\1\6\1\22\2\uffff\6\6\1\uffff\1\6\1\uffff\4\6\5\uffff"+
+            "\5\6\1\1\1\6\1\22\2\uffff\6\6\1\uffff\1\6\1\uffff\4\6\5\uffff"+
             "\2\6\5\uffff\1\6\1\uffff\1\1\3\uffff\4\6\1\uffff\1\15\1\16\1"+
             "\17\1\20\1\21\1\14\2\6\2\uffff\1\1\1\uffff\1\6\16\uffff\6\1",
             "\1\uffff",
@@ -8892,7 +8961,7 @@
             this.transition = DFA64_transition;
         }
         public String getDescription() {
-            return "()* loopback of 1397:3: ( options {backtrack=true; } : DOUBLE_PIPE and_restr_connective[or] )*";
+            return "()* loopback of 1413:3: ( options {backtrack=true; } : DOUBLE_PIPE and_restr_connective[or] )*";
         }
         public int specialStateTransition(int s, IntStream input) throws NoViableAltException {
         	int _s = s;
@@ -8925,9 +8994,9 @@
     static final String DFA65_eofS =
         "\1\1\31\uffff";
     static final String DFA65_minS =
-        "\1\13\1\uffff\1\4\1\10\2\4\1\uffff\1\4\22\0";
+        "\1\14\1\uffff\1\4\1\11\2\4\1\uffff\1\4\22\0";
     static final String DFA65_maxS =
-        "\1\45\1\uffff\4\121\1\uffff\1\121\22\0";
+        "\1\46\1\uffff\4\122\1\uffff\1\122\22\0";
     static final String DFA65_acceptS =
         "\1\uffff\1\2\4\uffff\1\1\23\uffff";
     static final String DFA65_specialS =
@@ -8935,21 +9004,21 @@
     static final String[] DFA65_transitionS = {
             "\2\1\26\uffff\1\1\1\uffff\1\2",
             "",
-            "\4\1\1\uffff\1\1\1\4\2\uffff\6\1\3\uffff\1\1\1\uffff\1\1\6\uffff"+
+            "\5\1\1\uffff\1\1\1\4\2\uffff\6\1\3\uffff\1\1\1\uffff\1\1\6\uffff"+
             "\2\1\5\uffff\1\1\1\uffff\1\6\1\1\2\uffff\4\1\1\uffff\1\5\1\7"+
             "\1\10\1\11\1\12\1\3\6\uffff\1\1\16\uffff\6\6",
             "\1\1\1\uffff\1\13\35\uffff\1\1\10\uffff\6\1\4\uffff\1\1\20\uffff"+
             "\6\1",
-            "\4\1\1\uffff\1\1\1\15\2\uffff\6\1\3\uffff\1\1\1\uffff\1\1\6"+
+            "\5\1\1\uffff\1\1\1\15\2\uffff\6\1\3\uffff\1\1\1\uffff\1\1\6"+
             "\uffff\2\1\5\uffff\1\1\1\uffff\1\6\1\1\2\uffff\4\1\1\uffff\1"+
             "\16\1\17\1\20\1\21\1\22\1\14\6\uffff\1\1\16\uffff\6\6",
-            "\4\6\1\1\1\6\1\24\2\uffff\6\6\1\uffff\1\6\1\uffff\4\6\5\uffff"+
-            "\2\6\5\uffff\1\6\1\uffff\1\1\3\uffff\4\6\1\uffff\1\25\1\26\1"+
-            "\27\1\30\1\31\1\23\2\6\2\uffff\1\1\1\uffff\1\6\16\uffff\6\1",
+            "\5\6\1\1\1\6\1\31\2\uffff\6\6\1\uffff\1\6\1\uffff\4\6\5\uffff"+
+            "\2\6\5\uffff\1\6\1\uffff\1\1\3\uffff\4\6\1\uffff\1\24\1\25\1"+
+            "\26\1\27\1\30\1\23\2\6\2\uffff\1\1\1\uffff\1\6\16\uffff\6\1",
             "",
-            "\4\6\1\1\1\6\1\24\2\uffff\6\6\1\uffff\1\6\1\uffff\4\6\5\uffff"+
-            "\2\6\5\uffff\1\6\1\uffff\1\1\3\uffff\4\6\1\uffff\1\25\1\26\1"+
-            "\27\1\30\1\31\1\23\2\6\2\uffff\1\1\1\uffff\1\6\16\uffff\6\1",
+            "\5\6\1\1\1\6\1\31\2\uffff\6\6\1\uffff\1\6\1\uffff\4\6\5\uffff"+
+            "\2\6\5\uffff\1\6\1\uffff\1\1\3\uffff\4\6\1\uffff\1\24\1\25\1"+
+            "\26\1\27\1\30\1\23\2\6\2\uffff\1\1\1\uffff\1\6\16\uffff\6\1",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -9000,333 +9069,338 @@
             this.transition = DFA65_transition;
         }
         public String getDescription() {
-            return "()* loopback of 1420:3: ( options {backtrack=true; } : t= DOUBLE_AMPER constraint_expression[and] )*";
+            return "()* loopback of 1436:3: ( options {backtrack=true; } : t= DOUBLE_AMPER constraint_expression[and] )*";
         }
     }
  
 
-    public static final BitSet FOLLOW_72_in_opt_semicolon39 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_prolog_in_compilation_unit57 = new BitSet(new long[]{0x00000003FD69A260L});
-    public static final BitSet FOLLOW_statement_in_compilation_unit62 = new BitSet(new long[]{0x00000003FD69A260L});
+    public static final BitSet FOLLOW_73_in_opt_semicolon39 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_prolog_in_compilation_unit57 = new BitSet(new long[]{0x00000007FAD34460L});
+    public static final BitSet FOLLOW_statement_in_compilation_unit62 = new BitSet(new long[]{0x00000007FAD34460L});
     public static final BitSet FOLLOW_EOF_in_compilation_unit67 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_package_statement_in_prolog96 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_rule_attribute_in_statement121 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_function_import_statement_in_statement128 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_import_statement_in_statement134 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_global_in_statement140 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_in_statement146 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_template_in_statement160 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_rule_in_statement169 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_query_in_statement181 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_PACKAGE_in_package_statement205 = new BitSet(new long[]{0x207EF0418147E2F0L});
-    public static final BitSet FOLLOW_dotted_name_in_package_statement209 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-    public static final BitSet FOLLOW_opt_semicolon_in_package_statement211 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_IMPORT_in_import_statement242 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_import_name_in_import_statement265 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-    public static final BitSet FOLLOW_opt_semicolon_in_import_statement268 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_IMPORT_in_function_import_statement292 = new BitSet(new long[]{0x0000000000000040L});
-    public static final BitSet FOLLOW_FUNCTION_in_function_import_statement294 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_import_name_in_function_import_statement317 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-    public static final BitSet FOLLOW_opt_semicolon_in_function_import_statement320 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_import_name346 = new BitSet(new long[]{0x0000000000000102L,0x0000000000000200L});
-    public static final BitSet FOLLOW_DOT_in_import_name358 = new BitSet(new long[]{0x207EF0418147E2F0L});
-    public static final BitSet FOLLOW_identifier_in_import_name362 = new BitSet(new long[]{0x0000000000000102L,0x0000000000000200L});
-    public static final BitSet FOLLOW_73_in_import_name386 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_GLOBAL_in_global420 = new BitSet(new long[]{0x207EF0418147E2F0L});
-    public static final BitSet FOLLOW_dotted_name_in_global431 = new BitSet(new long[]{0x207EF0418147E2F0L});
-    public static final BitSet FOLLOW_identifier_in_global442 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-    public static final BitSet FOLLOW_opt_semicolon_in_global444 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FUNCTION_in_function469 = new BitSet(new long[]{0x207EF0418147E2F0L});
-    public static final BitSet FOLLOW_dotted_name_in_function473 = new BitSet(new long[]{0x207EF0418147E2F0L});
-    public static final BitSet FOLLOW_identifier_in_function478 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_function487 = new BitSet(new long[]{0x207EF0418147F2F0L});
-    public static final BitSet FOLLOW_dotted_name_in_function496 = new BitSet(new long[]{0x207EF0418147E2F0L});
-    public static final BitSet FOLLOW_argument_in_function501 = new BitSet(new long[]{0x0000000000001800L});
-    public static final BitSet FOLLOW_COMMA_in_function515 = new BitSet(new long[]{0x207EF0418147E2F0L});
-    public static final BitSet FOLLOW_dotted_name_in_function519 = new BitSet(new long[]{0x207EF0418147E2F0L});
-    public static final BitSet FOLLOW_argument_in_function524 = new BitSet(new long[]{0x0000000000001800L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_function548 = new BitSet(new long[]{0x0200000000000000L});
-    public static final BitSet FOLLOW_curly_chunk_in_function554 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_argument581 = new BitSet(new long[]{0x0800000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_argument587 = new BitSet(new long[]{0x1000000000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_argument589 = new BitSet(new long[]{0x0800000000000002L});
-    public static final BitSet FOLLOW_QUERY_in_query619 = new BitSet(new long[]{0x0000000000100080L});
-    public static final BitSet FOLLOW_name_in_query623 = new BitSet(new long[]{0x0000078000004480L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_query633 = new BitSet(new long[]{0x0000000000001080L});
-    public static final BitSet FOLLOW_qualified_id_in_query668 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_ID_in_query673 = new BitSet(new long[]{0x0000000000001800L});
-    public static final BitSet FOLLOW_COMMA_in_query694 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_qualified_id_in_query698 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_ID_in_query703 = new BitSet(new long[]{0x0000000000001800L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_query753 = new BitSet(new long[]{0x0000078000004480L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_query782 = new BitSet(new long[]{0x0000000000004000L});
-    public static final BitSet FOLLOW_END_in_query787 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-    public static final BitSet FOLLOW_opt_semicolon_in_query789 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_TEMPLATE_in_template817 = new BitSet(new long[]{0x0000000000100080L});
-    public static final BitSet FOLLOW_name_in_template821 = new BitSet(new long[]{0x0000000000000080L,0x0000000000000100L});
-    public static final BitSet FOLLOW_opt_semicolon_in_template823 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_template_slot_in_template838 = new BitSet(new long[]{0x0000000000004080L});
-    public static final BitSet FOLLOW_END_in_template853 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-    public static final BitSet FOLLOW_opt_semicolon_in_template855 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_qualified_id_in_template_slot901 = new BitSet(new long[]{0x207EF0418147E2F0L});
-    public static final BitSet FOLLOW_identifier_in_template_slot917 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-    public static final BitSet FOLLOW_opt_semicolon_in_template_slot919 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_RULE_in_rule950 = new BitSet(new long[]{0x0000000000100080L});
-    public static final BitSet FOLLOW_name_in_rule954 = new BitSet(new long[]{0x20000003FD6E0000L});
-    public static final BitSet FOLLOW_rule_attributes_in_rule963 = new BitSet(new long[]{0x2000000000020000L});
-    public static final BitSet FOLLOW_WHEN_in_rule975 = new BitSet(new long[]{0x2000078000000480L,0x0000000000000400L});
-    public static final BitSet FOLLOW_74_in_rule977 = new BitSet(new long[]{0x2000078000000480L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_rule988 = new BitSet(new long[]{0x2000000000000000L});
-    public static final BitSet FOLLOW_rhs_chunk_in_rule998 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ATTRIBUTES_in_rule_attributes1018 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
-    public static final BitSet FOLLOW_74_in_rule_attributes1020 = new BitSet(new long[]{0x00000003FD680000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1028 = new BitSet(new long[]{0x00000003FD680802L});
-    public static final BitSet FOLLOW_COMMA_in_rule_attributes1035 = new BitSet(new long[]{0x00000003FD680000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1040 = new BitSet(new long[]{0x00000003FD680802L});
-    public static final BitSet FOLLOW_salience_in_rule_attribute1077 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_no_loop_in_rule_attribute1085 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_agenda_group_in_rule_attribute1094 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_duration_in_rule_attribute1103 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_activation_group_in_rule_attribute1112 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_auto_focus_in_rule_attribute1120 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_effective_in_rule_attribute1128 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_expires_in_rule_attribute1136 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enabled_in_rule_attribute1144 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ruleflow_group_in_rule_attribute1152 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lock_on_active_in_rule_attribute1160 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_dialect_in_rule_attribute1167 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DATE_EFFECTIVE_in_date_effective1193 = new BitSet(new long[]{0x0000000000100000L});
-    public static final BitSet FOLLOW_STRING_in_date_effective1195 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DATE_EXPIRES_in_date_expires1224 = new BitSet(new long[]{0x0000000000100000L});
-    public static final BitSet FOLLOW_STRING_in_date_expires1226 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ENABLED_in_enabled1255 = new BitSet(new long[]{0x0000000000800000L});
-    public static final BitSet FOLLOW_BOOL_in_enabled1257 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SALIENCE_in_salience1290 = new BitSet(new long[]{0x0000000002000400L});
-    public static final BitSet FOLLOW_INT_in_salience1301 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_salience1316 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NO_LOOP_in_no_loop1346 = new BitSet(new long[]{0x0000000000800002L});
-    public static final BitSet FOLLOW_BOOL_in_no_loop1359 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_AUTO_FOCUS_in_auto_focus1394 = new BitSet(new long[]{0x0000000000800002L});
-    public static final BitSet FOLLOW_BOOL_in_auto_focus1407 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ACTIVATION_GROUP_in_activation_group1443 = new BitSet(new long[]{0x0000000000100000L});
-    public static final BitSet FOLLOW_STRING_in_activation_group1445 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_RULEFLOW_GROUP_in_ruleflow_group1473 = new BitSet(new long[]{0x0000000000100000L});
-    public static final BitSet FOLLOW_STRING_in_ruleflow_group1475 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_AGENDA_GROUP_in_agenda_group1503 = new BitSet(new long[]{0x0000000000100000L});
-    public static final BitSet FOLLOW_STRING_in_agenda_group1505 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DURATION_in_duration1533 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_INT_in_duration1535 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DIALECT_in_dialect1563 = new BitSet(new long[]{0x0000000000100000L});
-    public static final BitSet FOLLOW_STRING_in_dialect1565 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LOCK_ON_ACTIVE_in_lock_on_active1597 = new BitSet(new long[]{0x0000000000800002L});
-    public static final BitSet FOLLOW_BOOL_in_lock_on_active1610 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_in_normal_lhs_block1649 = new BitSet(new long[]{0x0000078000000482L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs1686 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or1711 = new BitSet(new long[]{0x0000000400000000L});
-    public static final BitSet FOLLOW_OR_in_lhs_or1713 = new BitSet(new long[]{0x0000078000000480L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or1726 = new BitSet(new long[]{0x0000078000001480L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or1737 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or1755 = new BitSet(new long[]{0x0000000C00000002L});
-    public static final BitSet FOLLOW_set_in_lhs_or1763 = new BitSet(new long[]{0x0000078000000480L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or1779 = new BitSet(new long[]{0x0000000C00000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_and1810 = new BitSet(new long[]{0x0000001000000000L});
-    public static final BitSet FOLLOW_AND_in_lhs_and1812 = new BitSet(new long[]{0x0000078000000480L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and1824 = new BitSet(new long[]{0x0000078000001480L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_and1834 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and1852 = new BitSet(new long[]{0x0000003000000002L});
-    public static final BitSet FOLLOW_set_in_lhs_and1860 = new BitSet(new long[]{0x0000078000000480L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and1876 = new BitSet(new long[]{0x0000003000000002L});
-    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary1921 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-    public static final BitSet FOLLOW_lhs_not_in_lhs_unary1939 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary1958 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary1977 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary1994 = new BitSet(new long[]{0x0000078000000480L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_unary1998 = new BitSet(new long[]{0x0000000000001000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary2000 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-    public static final BitSet FOLLOW_pattern_source_in_lhs_unary2011 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-    public static final BitSet FOLLOW_opt_semicolon_in_lhs_unary2023 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_pattern_source2050 = new BitSet(new long[]{0x0000004000000002L});
-    public static final BitSet FOLLOW_FROM_in_pattern_source2062 = new BitSet(new long[]{0x207FF8418147E2F0L});
-    public static final BitSet FOLLOW_accumulate_statement_in_pattern_source2118 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_collect_statement_in_pattern_source2141 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_from_statement_in_pattern_source2165 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EXISTS_in_lhs_exist2208 = new BitSet(new long[]{0x0000000000000480L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist2228 = new BitSet(new long[]{0x0000078000000480L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2232 = new BitSet(new long[]{0x0000000000001000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist2262 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_exist2312 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NOT_in_lhs_not2364 = new BitSet(new long[]{0x0000000000000480L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not2377 = new BitSet(new long[]{0x0000078000000480L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_not2381 = new BitSet(new long[]{0x0000000000001000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not2412 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_not2449 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EVAL_in_lhs_eval2495 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval2506 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FORALL_in_lhs_forall2532 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall2534 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_forall2538 = new BitSet(new long[]{0x0000000000001080L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_forall2553 = new BitSet(new long[]{0x0000000000001080L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall2569 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_binding_in_lhs_pattern2602 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_lhs_pattern2610 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_from_source_in_from_statement2637 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ACCUMULATE_in_accumulate_statement2674 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement2684 = new BitSet(new long[]{0x0000078000000480L});
-    public static final BitSet FOLLOW_lhs_or_in_accumulate_statement2688 = new BitSet(new long[]{0x0000100000000880L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_statement2690 = new BitSet(new long[]{0x0000100000000080L});
-    public static final BitSet FOLLOW_INIT_in_accumulate_statement2708 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement2721 = new BitSet(new long[]{0x0000200000000800L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_statement2723 = new BitSet(new long[]{0x0000200000000000L});
-    public static final BitSet FOLLOW_ACTION_in_accumulate_statement2734 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement2738 = new BitSet(new long[]{0x0000C00000000800L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_statement2740 = new BitSet(new long[]{0x0000C00000000000L});
-    public static final BitSet FOLLOW_REVERSE_in_accumulate_statement2753 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement2757 = new BitSet(new long[]{0x0000800000000800L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_statement2759 = new BitSet(new long[]{0x0000800000000000L});
-    public static final BitSet FOLLOW_RESULT_in_accumulate_statement2776 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement2780 = new BitSet(new long[]{0x0000000000001000L});
-    public static final BitSet FOLLOW_ID_in_accumulate_statement2806 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement2810 = new BitSet(new long[]{0x0000000000001000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement2827 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_from_source2855 = new BitSet(new long[]{0x0000000000000502L});
-    public static final BitSet FOLLOW_paren_chunk_in_from_source2883 = new BitSet(new long[]{0x0000000000000102L});
-    public static final BitSet FOLLOW_expression_chain_in_from_source2896 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOT_in_expression_chain2931 = new BitSet(new long[]{0x207EF0418147E2F0L});
-    public static final BitSet FOLLOW_identifier_in_expression_chain2935 = new BitSet(new long[]{0x0800000000000502L});
-    public static final BitSet FOLLOW_square_chunk_in_expression_chain2966 = new BitSet(new long[]{0x0000000000000102L});
-    public static final BitSet FOLLOW_paren_chunk_in_expression_chain2999 = new BitSet(new long[]{0x0000000000000102L});
-    public static final BitSet FOLLOW_expression_chain_in_expression_chain3014 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_COLLECT_in_collect_statement3065 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement3075 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_pattern_source_in_collect_statement3079 = new BitSet(new long[]{0x0000000000001000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement3081 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_fact_binding3113 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
-    public static final BitSet FOLLOW_74_in_fact_binding3115 = new BitSet(new long[]{0x0000000000000480L});
-    public static final BitSet FOLLOW_fact_in_fact_binding3129 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_binding3145 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_fact_in_fact_binding3149 = new BitSet(new long[]{0x0000000C00001000L});
-    public static final BitSet FOLLOW_set_in_fact_binding3162 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_fact_in_fact_binding3174 = new BitSet(new long[]{0x0000000C00001000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_binding3192 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_qualified_id_in_fact3247 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact3257 = new BitSet(new long[]{0x207EF2418147F6F0L});
-    public static final BitSet FOLLOW_constraints_in_fact3269 = new BitSet(new long[]{0x0000000000001000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact3276 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EOF_in_fact3285 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_constraint_in_constraints3303 = new BitSet(new long[]{0x0000000000000802L});
-    public static final BitSet FOLLOW_COMMA_in_constraints3310 = new BitSet(new long[]{0x207EF2418147E6F0L});
-    public static final BitSet FOLLOW_constraint_in_constraints3319 = new BitSet(new long[]{0x0000000000000802L});
-    public static final BitSet FOLLOW_or_constr_in_constraint3352 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_constr_in_or_constr3375 = new BitSet(new long[]{0x0000000800000002L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_constr3383 = new BitSet(new long[]{0x207EF2418147E6F0L});
-    public static final BitSet FOLLOW_and_constr_in_or_constr3392 = new BitSet(new long[]{0x0000000800000002L});
-    public static final BitSet FOLLOW_unary_constr_in_and_constr3424 = new BitSet(new long[]{0x0000002000000002L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_constr3432 = new BitSet(new long[]{0x207EF2418147E6F0L});
-    public static final BitSet FOLLOW_unary_constr_in_and_constr3441 = new BitSet(new long[]{0x0000002000000002L});
-    public static final BitSet FOLLOW_field_constraint_in_unary_constr3469 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_unary_constr3477 = new BitSet(new long[]{0x207EF2418147E6F0L});
-    public static final BitSet FOLLOW_or_constr_in_unary_constr3479 = new BitSet(new long[]{0x0000000000001000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_unary_constr3482 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EVAL_in_unary_constr3488 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_predicate_in_unary_constr3490 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_field_constraint3529 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
-    public static final BitSet FOLLOW_74_in_field_constraint3531 = new BitSet(new long[]{0x207EF0418147E2F0L});
-    public static final BitSet FOLLOW_accessor_path_in_field_constraint3550 = new BitSet(new long[]{0x007E010000000402L,0x000000000003F800L});
-    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3578 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_75_in_field_constraint3598 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_predicate_in_field_constraint3600 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_path_in_field_constraint3626 = new BitSet(new long[]{0x007E010000000400L,0x000000000003F000L});
-    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3648 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective3699 = new BitSet(new long[]{0x0000000800000002L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_restr_connective3723 = new BitSet(new long[]{0x007E010000000400L,0x000000000003F000L});
-    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective3734 = new BitSet(new long[]{0x0000000800000002L});
-    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective3766 = new BitSet(new long[]{0x0000002000000002L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_restr_connective3787 = new BitSet(new long[]{0x007E010000000400L,0x000000000003F000L});
-    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective3798 = new BitSet(new long[]{0x0000002000000002L});
-    public static final BitSet FOLLOW_compound_operator_in_constraint_expression3835 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_simple_operator_in_constraint_expression3842 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_constraint_expression3849 = new BitSet(new long[]{0x007E010000000400L,0x000000000003F000L});
-    public static final BitSet FOLLOW_or_restr_connective_in_constraint_expression3858 = new BitSet(new long[]{0x0000000000001000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_constraint_expression3864 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_76_in_simple_operator3895 = new BitSet(new long[]{0x21FEF04183D7E6F0L});
-    public static final BitSet FOLLOW_77_in_simple_operator3903 = new BitSet(new long[]{0x21FEF04183D7E6F0L});
-    public static final BitSet FOLLOW_78_in_simple_operator3911 = new BitSet(new long[]{0x21FEF04183D7E6F0L});
-    public static final BitSet FOLLOW_79_in_simple_operator3919 = new BitSet(new long[]{0x21FEF04183D7E6F0L});
-    public static final BitSet FOLLOW_80_in_simple_operator3927 = new BitSet(new long[]{0x21FEF04183D7E6F0L});
-    public static final BitSet FOLLOW_81_in_simple_operator3935 = new BitSet(new long[]{0x21FEF04183D7E6F0L});
-    public static final BitSet FOLLOW_CONTAINS_in_simple_operator3943 = new BitSet(new long[]{0x21FEF04183D7E6F0L});
-    public static final BitSet FOLLOW_NOT_in_simple_operator3951 = new BitSet(new long[]{0x0002000000000000L});
-    public static final BitSet FOLLOW_CONTAINS_in_simple_operator3955 = new BitSet(new long[]{0x21FEF04183D7E6F0L});
-    public static final BitSet FOLLOW_EXCLUDES_in_simple_operator3963 = new BitSet(new long[]{0x21FEF04183D7E6F0L});
-    public static final BitSet FOLLOW_MATCHES_in_simple_operator3971 = new BitSet(new long[]{0x21FEF04183D7E6F0L});
-    public static final BitSet FOLLOW_SOUNDSLIKE_in_simple_operator3979 = new BitSet(new long[]{0x21FEF04183D7E6F0L});
-    public static final BitSet FOLLOW_NOT_in_simple_operator3987 = new BitSet(new long[]{0x0008000000000000L});
-    public static final BitSet FOLLOW_MATCHES_in_simple_operator3991 = new BitSet(new long[]{0x21FEF04183D7E6F0L});
-    public static final BitSet FOLLOW_MEMBEROF_in_simple_operator3999 = new BitSet(new long[]{0x21FEF04183D7E6F0L});
-    public static final BitSet FOLLOW_NOT_in_simple_operator4007 = new BitSet(new long[]{0x0020000000000000L});
-    public static final BitSet FOLLOW_MEMBEROF_in_simple_operator4011 = new BitSet(new long[]{0x21FEF04183D7E6F0L});
-    public static final BitSet FOLLOW_expression_value_in_simple_operator4025 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_IN_in_compound_operator4055 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_NOT_in_compound_operator4067 = new BitSet(new long[]{0x0040000000000000L});
-    public static final BitSet FOLLOW_IN_in_compound_operator4069 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_compound_operator4084 = new BitSet(new long[]{0x21FEF04183D7E6F0L});
-    public static final BitSet FOLLOW_expression_value_in_compound_operator4088 = new BitSet(new long[]{0x0000000000001800L});
-    public static final BitSet FOLLOW_COMMA_in_compound_operator4095 = new BitSet(new long[]{0x21FEF04183D7E6F0L});
-    public static final BitSet FOLLOW_expression_value_in_compound_operator4099 = new BitSet(new long[]{0x0000000000001800L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_compound_operator4108 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_path_in_expression_value4142 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_constraint_in_expression_value4162 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_expression_value4176 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_literal_constraint4219 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INT_in_literal_constraint4230 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FLOAT_in_literal_constraint4243 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BOOL_in_literal_constraint4254 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_literal_constraint4266 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_predicate4304 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk4322 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000003FFFFL});
-    public static final BitSet FOLLOW_set_in_curly_chunk4326 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000003FFFFL});
-    public static final BitSet FOLLOW_curly_chunk_in_curly_chunk4335 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000003FFFFL});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk4340 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk4354 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000003FFFFL});
-    public static final BitSet FOLLOW_set_in_paren_chunk4358 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000003FFFFL});
-    public static final BitSet FOLLOW_paren_chunk_in_paren_chunk4367 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000003FFFFL});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk4372 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk4385 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000003FFFFL});
-    public static final BitSet FOLLOW_set_in_square_chunk4389 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000003FFFFL});
-    public static final BitSet FOLLOW_square_chunk_in_square_chunk4398 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000003FFFFL});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk4403 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_qualified_id4432 = new BitSet(new long[]{0x0800000000000102L});
-    public static final BitSet FOLLOW_DOT_in_qualified_id4438 = new BitSet(new long[]{0x207EF0418147E2F0L});
-    public static final BitSet FOLLOW_identifier_in_qualified_id4440 = new BitSet(new long[]{0x0800000000000102L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_qualified_id4449 = new BitSet(new long[]{0x1000000000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_qualified_id4451 = new BitSet(new long[]{0x0800000000000002L});
-    public static final BitSet FOLLOW_identifier_in_dotted_name4485 = new BitSet(new long[]{0x0800000000000102L});
-    public static final BitSet FOLLOW_DOT_in_dotted_name4491 = new BitSet(new long[]{0x207EF0418147E2F0L});
-    public static final BitSet FOLLOW_identifier_in_dotted_name4495 = new BitSet(new long[]{0x0800000000000102L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_dotted_name4504 = new BitSet(new long[]{0x1000000000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dotted_name4506 = new BitSet(new long[]{0x0800000000000002L});
-    public static final BitSet FOLLOW_accessor_element_in_accessor_path4540 = new BitSet(new long[]{0x0000000000000102L});
-    public static final BitSet FOLLOW_DOT_in_accessor_path4546 = new BitSet(new long[]{0x207EF0418147E2F0L});
-    public static final BitSet FOLLOW_accessor_element_in_accessor_path4550 = new BitSet(new long[]{0x0000000000000102L});
-    public static final BitSet FOLLOW_identifier_in_accessor_element4588 = new BitSet(new long[]{0x0800000000000002L});
-    public static final BitSet FOLLOW_square_chunk_in_accessor_element4595 = new BitSet(new long[]{0x0800000000000002L});
-    public static final BitSet FOLLOW_THEN_in_rhs_chunk4616 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000003FFFFL});
-    public static final BitSet FOLLOW_set_in_rhs_chunk4624 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000003FFFFL});
-    public static final BitSet FOLLOW_END_in_rhs_chunk4648 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-    public static final BitSet FOLLOW_opt_semicolon_in_rhs_chunk4650 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_name4684 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_name4692 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_event_import_statement_in_statement134 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_statement_in_statement139 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_global_in_statement145 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_in_statement151 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_template_in_statement165 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule_in_statement174 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_query_in_statement186 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_PACKAGE_in_package_statement210 = new BitSet(new long[]{0x40FDE083028FC5F0L});
+    public static final BitSet FOLLOW_dotted_name_in_package_statement214 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
+    public static final BitSet FOLLOW_opt_semicolon_in_package_statement216 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_IMPORT_in_import_statement247 = new BitSet(new long[]{0x0000000000000100L});
+    public static final BitSet FOLLOW_import_name_in_import_statement270 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
+    public static final BitSet FOLLOW_opt_semicolon_in_import_statement273 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_IMPORT_in_function_import_statement297 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_FUNCTION_in_function_import_statement299 = new BitSet(new long[]{0x0000000000000100L});
+    public static final BitSet FOLLOW_import_name_in_function_import_statement322 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
+    public static final BitSet FOLLOW_opt_semicolon_in_function_import_statement325 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_IMPORT_in_event_import_statement349 = new BitSet(new long[]{0x0000000000000080L});
+    public static final BitSet FOLLOW_EVENT_in_event_import_statement351 = new BitSet(new long[]{0x0000000000000100L});
+    public static final BitSet FOLLOW_import_name_in_event_import_statement374 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
+    public static final BitSet FOLLOW_opt_semicolon_in_event_import_statement377 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_import_name403 = new BitSet(new long[]{0x0000000000000202L,0x0000000000000400L});
+    public static final BitSet FOLLOW_DOT_in_import_name415 = new BitSet(new long[]{0x40FDE083028FC5F0L});
+    public static final BitSet FOLLOW_identifier_in_import_name419 = new BitSet(new long[]{0x0000000000000202L,0x0000000000000400L});
+    public static final BitSet FOLLOW_74_in_import_name443 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_GLOBAL_in_global477 = new BitSet(new long[]{0x40FDE083028FC5F0L});
+    public static final BitSet FOLLOW_dotted_name_in_global488 = new BitSet(new long[]{0x40FDE083028FC5F0L});
+    public static final BitSet FOLLOW_identifier_in_global499 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
+    public static final BitSet FOLLOW_opt_semicolon_in_global501 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FUNCTION_in_function526 = new BitSet(new long[]{0x40FDE083028FC5F0L});
+    public static final BitSet FOLLOW_dotted_name_in_function530 = new BitSet(new long[]{0x40FDE083028FC5F0L});
+    public static final BitSet FOLLOW_identifier_in_function535 = new BitSet(new long[]{0x0000000000000800L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_function544 = new BitSet(new long[]{0x40FDE083028FE5F0L});
+    public static final BitSet FOLLOW_dotted_name_in_function553 = new BitSet(new long[]{0x40FDE083028FC5F0L});
+    public static final BitSet FOLLOW_argument_in_function558 = new BitSet(new long[]{0x0000000000003000L});
+    public static final BitSet FOLLOW_COMMA_in_function572 = new BitSet(new long[]{0x40FDE083028FC5F0L});
+    public static final BitSet FOLLOW_dotted_name_in_function576 = new BitSet(new long[]{0x40FDE083028FC5F0L});
+    public static final BitSet FOLLOW_argument_in_function581 = new BitSet(new long[]{0x0000000000003000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_function605 = new BitSet(new long[]{0x0400000000000000L});
+    public static final BitSet FOLLOW_curly_chunk_in_function611 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_argument638 = new BitSet(new long[]{0x1000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_argument644 = new BitSet(new long[]{0x2000000000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_argument646 = new BitSet(new long[]{0x1000000000000002L});
+    public static final BitSet FOLLOW_QUERY_in_query676 = new BitSet(new long[]{0x0000000000200100L});
+    public static final BitSet FOLLOW_name_in_query680 = new BitSet(new long[]{0x00000F0000008900L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_query690 = new BitSet(new long[]{0x0000000000002100L});
+    public static final BitSet FOLLOW_qualified_id_in_query725 = new BitSet(new long[]{0x0000000000000100L});
+    public static final BitSet FOLLOW_ID_in_query730 = new BitSet(new long[]{0x0000000000003000L});
+    public static final BitSet FOLLOW_COMMA_in_query751 = new BitSet(new long[]{0x0000000000000100L});
+    public static final BitSet FOLLOW_qualified_id_in_query755 = new BitSet(new long[]{0x0000000000000100L});
+    public static final BitSet FOLLOW_ID_in_query760 = new BitSet(new long[]{0x0000000000003000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_query810 = new BitSet(new long[]{0x00000F0000008900L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_query839 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_END_in_query844 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
+    public static final BitSet FOLLOW_opt_semicolon_in_query846 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_TEMPLATE_in_template874 = new BitSet(new long[]{0x0000000000200100L});
+    public static final BitSet FOLLOW_name_in_template878 = new BitSet(new long[]{0x0000000000000100L,0x0000000000000200L});
+    public static final BitSet FOLLOW_opt_semicolon_in_template880 = new BitSet(new long[]{0x0000000000000100L});
+    public static final BitSet FOLLOW_template_slot_in_template895 = new BitSet(new long[]{0x0000000000008100L});
+    public static final BitSet FOLLOW_END_in_template910 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
+    public static final BitSet FOLLOW_opt_semicolon_in_template912 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_qualified_id_in_template_slot958 = new BitSet(new long[]{0x40FDE083028FC5F0L});
+    public static final BitSet FOLLOW_identifier_in_template_slot974 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
+    public static final BitSet FOLLOW_opt_semicolon_in_template_slot976 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_in_rule1007 = new BitSet(new long[]{0x0000000000200100L});
+    public static final BitSet FOLLOW_name_in_rule1011 = new BitSet(new long[]{0x40000007FADC0000L});
+    public static final BitSet FOLLOW_rule_attributes_in_rule1020 = new BitSet(new long[]{0x4000000000040000L});
+    public static final BitSet FOLLOW_WHEN_in_rule1032 = new BitSet(new long[]{0x40000F0000000900L,0x0000000000000800L});
+    public static final BitSet FOLLOW_75_in_rule1034 = new BitSet(new long[]{0x40000F0000000900L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_rule1045 = new BitSet(new long[]{0x4000000000000000L});
+    public static final BitSet FOLLOW_rhs_chunk_in_rule1055 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ATTRIBUTES_in_rule_attributes1075 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
+    public static final BitSet FOLLOW_75_in_rule_attributes1077 = new BitSet(new long[]{0x00000007FAD00000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1085 = new BitSet(new long[]{0x00000007FAD01002L});
+    public static final BitSet FOLLOW_COMMA_in_rule_attributes1092 = new BitSet(new long[]{0x00000007FAD00000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1097 = new BitSet(new long[]{0x00000007FAD01002L});
+    public static final BitSet FOLLOW_salience_in_rule_attribute1134 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_no_loop_in_rule_attribute1142 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_agenda_group_in_rule_attribute1151 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_duration_in_rule_attribute1160 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_activation_group_in_rule_attribute1169 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_auto_focus_in_rule_attribute1177 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_effective_in_rule_attribute1185 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_expires_in_rule_attribute1193 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enabled_in_rule_attribute1201 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleflow_group_in_rule_attribute1209 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lock_on_active_in_rule_attribute1217 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_dialect_in_rule_attribute1224 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DATE_EFFECTIVE_in_date_effective1250 = new BitSet(new long[]{0x0000000000200000L});
+    public static final BitSet FOLLOW_STRING_in_date_effective1252 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DATE_EXPIRES_in_date_expires1281 = new BitSet(new long[]{0x0000000000200000L});
+    public static final BitSet FOLLOW_STRING_in_date_expires1283 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ENABLED_in_enabled1312 = new BitSet(new long[]{0x0000000001000000L});
+    public static final BitSet FOLLOW_BOOL_in_enabled1314 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SALIENCE_in_salience1347 = new BitSet(new long[]{0x0000000004000800L});
+    public static final BitSet FOLLOW_INT_in_salience1358 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_salience1373 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NO_LOOP_in_no_loop1403 = new BitSet(new long[]{0x0000000001000002L});
+    public static final BitSet FOLLOW_BOOL_in_no_loop1416 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AUTO_FOCUS_in_auto_focus1451 = new BitSet(new long[]{0x0000000001000002L});
+    public static final BitSet FOLLOW_BOOL_in_auto_focus1464 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACTIVATION_GROUP_in_activation_group1500 = new BitSet(new long[]{0x0000000000200000L});
+    public static final BitSet FOLLOW_STRING_in_activation_group1502 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULEFLOW_GROUP_in_ruleflow_group1530 = new BitSet(new long[]{0x0000000000200000L});
+    public static final BitSet FOLLOW_STRING_in_ruleflow_group1532 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AGENDA_GROUP_in_agenda_group1560 = new BitSet(new long[]{0x0000000000200000L});
+    public static final BitSet FOLLOW_STRING_in_agenda_group1562 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DURATION_in_duration1590 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_INT_in_duration1592 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DIALECT_in_dialect1620 = new BitSet(new long[]{0x0000000000200000L});
+    public static final BitSet FOLLOW_STRING_in_dialect1622 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LOCK_ON_ACTIVE_in_lock_on_active1654 = new BitSet(new long[]{0x0000000001000002L});
+    public static final BitSet FOLLOW_BOOL_in_lock_on_active1667 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_in_normal_lhs_block1706 = new BitSet(new long[]{0x00000F0000000902L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs1743 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or1768 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_OR_in_lhs_or1770 = new BitSet(new long[]{0x00000F0000000900L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or1783 = new BitSet(new long[]{0x00000F0000002900L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or1794 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or1812 = new BitSet(new long[]{0x0000001800000002L});
+    public static final BitSet FOLLOW_set_in_lhs_or1820 = new BitSet(new long[]{0x00000F0000000900L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or1836 = new BitSet(new long[]{0x0000001800000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_and1867 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_AND_in_lhs_and1869 = new BitSet(new long[]{0x00000F0000000900L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and1881 = new BitSet(new long[]{0x00000F0000002900L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_and1891 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and1909 = new BitSet(new long[]{0x0000006000000002L});
+    public static final BitSet FOLLOW_set_in_lhs_and1917 = new BitSet(new long[]{0x00000F0000000900L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and1933 = new BitSet(new long[]{0x0000006000000002L});
+    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary1978 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
+    public static final BitSet FOLLOW_lhs_not_in_lhs_unary1996 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
+    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary2015 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
+    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary2034 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary2051 = new BitSet(new long[]{0x00000F0000000900L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_unary2055 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary2057 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
+    public static final BitSet FOLLOW_pattern_source_in_lhs_unary2068 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
+    public static final BitSet FOLLOW_opt_semicolon_in_lhs_unary2080 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_pattern_source2107 = new BitSet(new long[]{0x0000008000000002L});
+    public static final BitSet FOLLOW_FROM_in_pattern_source2119 = new BitSet(new long[]{0x40FFF083028FC5F0L});
+    public static final BitSet FOLLOW_accumulate_statement_in_pattern_source2175 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_collect_statement_in_pattern_source2198 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_from_statement_in_pattern_source2222 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EXISTS_in_lhs_exist2265 = new BitSet(new long[]{0x0000000000000900L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist2285 = new BitSet(new long[]{0x00000F0000000900L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2289 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist2319 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_exist2369 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NOT_in_lhs_not2421 = new BitSet(new long[]{0x0000000000000900L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not2434 = new BitSet(new long[]{0x00000F0000000900L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_not2438 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not2469 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_not2506 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EVAL_in_lhs_eval2552 = new BitSet(new long[]{0x0000000000000800L});
+    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval2563 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FORALL_in_lhs_forall2589 = new BitSet(new long[]{0x0000000000000800L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall2591 = new BitSet(new long[]{0x0000000000000100L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_forall2595 = new BitSet(new long[]{0x0000000000002100L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_forall2610 = new BitSet(new long[]{0x0000000000002100L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall2626 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_binding_in_lhs_pattern2659 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_lhs_pattern2667 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_from_source_in_from_statement2694 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACCUMULATE_in_accumulate_statement2731 = new BitSet(new long[]{0x0000000000000800L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement2741 = new BitSet(new long[]{0x00000F0000000900L});
+    public static final BitSet FOLLOW_lhs_or_in_accumulate_statement2745 = new BitSet(new long[]{0x0000200000001100L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_statement2747 = new BitSet(new long[]{0x0000200000000100L});
+    public static final BitSet FOLLOW_INIT_in_accumulate_statement2765 = new BitSet(new long[]{0x0000000000000800L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement2778 = new BitSet(new long[]{0x0000400000001000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_statement2780 = new BitSet(new long[]{0x0000400000000000L});
+    public static final BitSet FOLLOW_ACTION_in_accumulate_statement2791 = new BitSet(new long[]{0x0000000000000800L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement2795 = new BitSet(new long[]{0x0001800000001000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_statement2797 = new BitSet(new long[]{0x0001800000000000L});
+    public static final BitSet FOLLOW_REVERSE_in_accumulate_statement2810 = new BitSet(new long[]{0x0000000000000800L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement2814 = new BitSet(new long[]{0x0001000000001000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_statement2816 = new BitSet(new long[]{0x0001000000000000L});
+    public static final BitSet FOLLOW_RESULT_in_accumulate_statement2833 = new BitSet(new long[]{0x0000000000000800L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement2837 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_ID_in_accumulate_statement2863 = new BitSet(new long[]{0x0000000000000800L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement2867 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement2884 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_from_source2912 = new BitSet(new long[]{0x0000000000000A02L});
+    public static final BitSet FOLLOW_paren_chunk_in_from_source2940 = new BitSet(new long[]{0x0000000000000202L});
+    public static final BitSet FOLLOW_expression_chain_in_from_source2953 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOT_in_expression_chain2988 = new BitSet(new long[]{0x40FDE083028FC5F0L});
+    public static final BitSet FOLLOW_identifier_in_expression_chain2992 = new BitSet(new long[]{0x1000000000000A02L});
+    public static final BitSet FOLLOW_square_chunk_in_expression_chain3023 = new BitSet(new long[]{0x0000000000000202L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_chain3056 = new BitSet(new long[]{0x0000000000000202L});
+    public static final BitSet FOLLOW_expression_chain_in_expression_chain3071 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COLLECT_in_collect_statement3122 = new BitSet(new long[]{0x0000000000000800L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement3132 = new BitSet(new long[]{0x0000000000000100L});
+    public static final BitSet FOLLOW_pattern_source_in_collect_statement3136 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement3138 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_fact_binding3170 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
+    public static final BitSet FOLLOW_75_in_fact_binding3172 = new BitSet(new long[]{0x0000000000000900L});
+    public static final BitSet FOLLOW_fact_in_fact_binding3186 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_binding3202 = new BitSet(new long[]{0x0000000000000100L});
+    public static final BitSet FOLLOW_fact_in_fact_binding3206 = new BitSet(new long[]{0x0000001800002000L});
+    public static final BitSet FOLLOW_set_in_fact_binding3219 = new BitSet(new long[]{0x0000000000000100L});
+    public static final BitSet FOLLOW_fact_in_fact_binding3231 = new BitSet(new long[]{0x0000001800002000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_binding3249 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_qualified_id_in_fact3304 = new BitSet(new long[]{0x0000000000000800L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact3314 = new BitSet(new long[]{0x40FDE483028FEDF0L});
+    public static final BitSet FOLLOW_constraints_in_fact3326 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact3333 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EOF_in_fact3342 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_constraint_in_constraints3360 = new BitSet(new long[]{0x0000000000001002L});
+    public static final BitSet FOLLOW_COMMA_in_constraints3367 = new BitSet(new long[]{0x40FDE483028FCDF0L});
+    public static final BitSet FOLLOW_constraint_in_constraints3376 = new BitSet(new long[]{0x0000000000001002L});
+    public static final BitSet FOLLOW_or_constr_in_constraint3409 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr3432 = new BitSet(new long[]{0x0000001000000002L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_constr3440 = new BitSet(new long[]{0x40FDE483028FCDF0L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr3449 = new BitSet(new long[]{0x0000001000000002L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr3481 = new BitSet(new long[]{0x0000004000000002L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_constr3489 = new BitSet(new long[]{0x40FDE483028FCDF0L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr3498 = new BitSet(new long[]{0x0000004000000002L});
+    public static final BitSet FOLLOW_field_constraint_in_unary_constr3526 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_unary_constr3534 = new BitSet(new long[]{0x40FDE483028FCDF0L});
+    public static final BitSet FOLLOW_or_constr_in_unary_constr3536 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_unary_constr3539 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EVAL_in_unary_constr3545 = new BitSet(new long[]{0x0000000000000800L});
+    public static final BitSet FOLLOW_predicate_in_unary_constr3547 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_field_constraint3586 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
+    public static final BitSet FOLLOW_75_in_field_constraint3588 = new BitSet(new long[]{0x40FDE083028FC5F0L});
+    public static final BitSet FOLLOW_accessor_path_in_field_constraint3607 = new BitSet(new long[]{0x00FC020000000802L,0x000000000007F000L});
+    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3635 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_76_in_field_constraint3655 = new BitSet(new long[]{0x0000000000000800L});
+    public static final BitSet FOLLOW_predicate_in_field_constraint3657 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_path_in_field_constraint3683 = new BitSet(new long[]{0x00FC020000000800L,0x000000000007E000L});
+    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3705 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective3756 = new BitSet(new long[]{0x0000001000000002L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_restr_connective3780 = new BitSet(new long[]{0x00FC020000000800L,0x000000000007E000L});
+    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective3791 = new BitSet(new long[]{0x0000001000000002L});
+    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective3823 = new BitSet(new long[]{0x0000004000000002L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_restr_connective3844 = new BitSet(new long[]{0x00FC020000000800L,0x000000000007E000L});
+    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective3855 = new BitSet(new long[]{0x0000004000000002L});
+    public static final BitSet FOLLOW_compound_operator_in_constraint_expression3892 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_simple_operator_in_constraint_expression3899 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_constraint_expression3906 = new BitSet(new long[]{0x00FC020000000800L,0x000000000007E000L});
+    public static final BitSet FOLLOW_or_restr_connective_in_constraint_expression3915 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_constraint_expression3921 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_77_in_simple_operator3952 = new BitSet(new long[]{0x43FDE08307AFCDF0L});
+    public static final BitSet FOLLOW_78_in_simple_operator3960 = new BitSet(new long[]{0x43FDE08307AFCDF0L});
+    public static final BitSet FOLLOW_79_in_simple_operator3968 = new BitSet(new long[]{0x43FDE08307AFCDF0L});
+    public static final BitSet FOLLOW_80_in_simple_operator3976 = new BitSet(new long[]{0x43FDE08307AFCDF0L});
+    public static final BitSet FOLLOW_81_in_simple_operator3984 = new BitSet(new long[]{0x43FDE08307AFCDF0L});
+    public static final BitSet FOLLOW_82_in_simple_operator3992 = new BitSet(new long[]{0x43FDE08307AFCDF0L});
+    public static final BitSet FOLLOW_CONTAINS_in_simple_operator4000 = new BitSet(new long[]{0x43FDE08307AFCDF0L});
+    public static final BitSet FOLLOW_NOT_in_simple_operator4008 = new BitSet(new long[]{0x0004000000000000L});
+    public static final BitSet FOLLOW_CONTAINS_in_simple_operator4012 = new BitSet(new long[]{0x43FDE08307AFCDF0L});
+    public static final BitSet FOLLOW_EXCLUDES_in_simple_operator4020 = new BitSet(new long[]{0x43FDE08307AFCDF0L});
+    public static final BitSet FOLLOW_MATCHES_in_simple_operator4028 = new BitSet(new long[]{0x43FDE08307AFCDF0L});
+    public static final BitSet FOLLOW_SOUNDSLIKE_in_simple_operator4036 = new BitSet(new long[]{0x43FDE08307AFCDF0L});
+    public static final BitSet FOLLOW_NOT_in_simple_operator4044 = new BitSet(new long[]{0x0010000000000000L});
+    public static final BitSet FOLLOW_MATCHES_in_simple_operator4048 = new BitSet(new long[]{0x43FDE08307AFCDF0L});
+    public static final BitSet FOLLOW_MEMBEROF_in_simple_operator4056 = new BitSet(new long[]{0x43FDE08307AFCDF0L});
+    public static final BitSet FOLLOW_NOT_in_simple_operator4064 = new BitSet(new long[]{0x0040000000000000L});
+    public static final BitSet FOLLOW_MEMBEROF_in_simple_operator4068 = new BitSet(new long[]{0x43FDE08307AFCDF0L});
+    public static final BitSet FOLLOW_expression_value_in_simple_operator4082 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_IN_in_compound_operator4112 = new BitSet(new long[]{0x0000000000000800L});
+    public static final BitSet FOLLOW_NOT_in_compound_operator4124 = new BitSet(new long[]{0x0080000000000000L});
+    public static final BitSet FOLLOW_IN_in_compound_operator4126 = new BitSet(new long[]{0x0000000000000800L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_compound_operator4141 = new BitSet(new long[]{0x43FDE08307AFCDF0L});
+    public static final BitSet FOLLOW_expression_value_in_compound_operator4145 = new BitSet(new long[]{0x0000000000003000L});
+    public static final BitSet FOLLOW_COMMA_in_compound_operator4152 = new BitSet(new long[]{0x43FDE08307AFCDF0L});
+    public static final BitSet FOLLOW_expression_value_in_compound_operator4156 = new BitSet(new long[]{0x0000000000003000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_compound_operator4165 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_path_in_expression_value4199 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_constraint_in_expression_value4219 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_value4233 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_literal_constraint4276 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_literal_constraint4287 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_literal_constraint4300 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_literal_constraint4311 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_literal_constraint4323 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_predicate4361 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk4379 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000007FFFFL});
+    public static final BitSet FOLLOW_set_in_curly_chunk4383 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000007FFFFL});
+    public static final BitSet FOLLOW_curly_chunk_in_curly_chunk4392 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000007FFFFL});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk4397 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk4411 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000007FFFFL});
+    public static final BitSet FOLLOW_set_in_paren_chunk4415 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000007FFFFL});
+    public static final BitSet FOLLOW_paren_chunk_in_paren_chunk4424 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000007FFFFL});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk4429 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk4442 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000007FFFFL});
+    public static final BitSet FOLLOW_set_in_square_chunk4446 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000007FFFFL});
+    public static final BitSet FOLLOW_square_chunk_in_square_chunk4455 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000007FFFFL});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk4460 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_qualified_id4489 = new BitSet(new long[]{0x1000000000000202L});
+    public static final BitSet FOLLOW_DOT_in_qualified_id4495 = new BitSet(new long[]{0x40FDE083028FC5F0L});
+    public static final BitSet FOLLOW_identifier_in_qualified_id4497 = new BitSet(new long[]{0x1000000000000202L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_qualified_id4506 = new BitSet(new long[]{0x2000000000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_qualified_id4508 = new BitSet(new long[]{0x1000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_dotted_name4542 = new BitSet(new long[]{0x1000000000000202L});
+    public static final BitSet FOLLOW_DOT_in_dotted_name4548 = new BitSet(new long[]{0x40FDE083028FC5F0L});
+    public static final BitSet FOLLOW_identifier_in_dotted_name4552 = new BitSet(new long[]{0x1000000000000202L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_dotted_name4561 = new BitSet(new long[]{0x2000000000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dotted_name4563 = new BitSet(new long[]{0x1000000000000002L});
+    public static final BitSet FOLLOW_accessor_element_in_accessor_path4597 = new BitSet(new long[]{0x0000000000000202L});
+    public static final BitSet FOLLOW_DOT_in_accessor_path4603 = new BitSet(new long[]{0x40FDE083028FC5F0L});
+    public static final BitSet FOLLOW_accessor_element_in_accessor_path4607 = new BitSet(new long[]{0x0000000000000202L});
+    public static final BitSet FOLLOW_identifier_in_accessor_element4645 = new BitSet(new long[]{0x1000000000000002L});
+    public static final BitSet FOLLOW_square_chunk_in_accessor_element4652 = new BitSet(new long[]{0x1000000000000002L});
+    public static final BitSet FOLLOW_THEN_in_rhs_chunk4673 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000007FFFFL});
+    public static final BitSet FOLLOW_set_in_rhs_chunk4681 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000007FFFFL});
+    public static final BitSet FOLLOW_END_in_rhs_chunk4705 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
+    public static final BitSet FOLLOW_opt_semicolon_in_rhs_chunk4707 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_name4741 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_name4749 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_set_in_identifier0 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EXISTS_in_synpred11913 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NOT_in_synpred21931 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EVAL_in_synpred31950 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FORALL_in_synpred41969 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred51988 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_synpred62958 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred72991 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_synpred83723 = new BitSet(new long[]{0x007E010000000400L,0x000000000003F000L});
-    public static final BitSet FOLLOW_and_restr_connective_in_synpred83734 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_synpred93787 = new BitSet(new long[]{0x007E010000000400L,0x000000000003F000L});
-    public static final BitSet FOLLOW_constraint_expression_in_synpred93798 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EXISTS_in_synpred11970 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NOT_in_synpred21988 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EVAL_in_synpred32007 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FORALL_in_synpred42026 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred52045 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_synpred63015 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred73048 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_synpred83780 = new BitSet(new long[]{0x00FC020000000800L,0x000000000007E000L});
+    public static final BitSet FOLLOW_and_restr_connective_in_synpred83791 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_synpred93844 = new BitSet(new long[]{0x00FC020000000800L,0x000000000007E000L});
+    public static final BitSet FOLLOW_constraint_expression_in_synpred93855 = new BitSet(new long[]{0x0000000000000002L});
 
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -498,8 +498,8 @@
         String importList = "";
 
         for ( final Iterator it = imports.iterator(); it.hasNext(); ) {
-            final String importString = ((ImportDescr) it.next()).getTarget();
-            final String importTemplate = "import " + importString + ";" + DrlDumper.eol;
+            final ImportDescr importDescr = (ImportDescr) it.next(); 
+            final String importTemplate = "import " + ( importDescr.isEvent() ? "event " : "" ) + importDescr.getTarget() + ";" + DrlDumper.eol;
             importList += importTemplate;
         }
         return importList + DrlDumper.eol;

Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -42,6 +42,10 @@
         return new FunctionImportDescr();
     }
 
+    public ImportDescr createEventImport() {
+        return new ImportDescr( true ); // import is an event
+    }
+
     public QueryDescr createQuery(final String queryName) {
         return new QueryDescr( queryName,
                                "" );

Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/descr/ImportDescr.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/descr/ImportDescr.java	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/descr/ImportDescr.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -24,12 +24,23 @@
 
     private static final long serialVersionUID = 400L;
     private String            target;
+    private boolean           event;
 
     public ImportDescr() {
+        this( null, false );
     }
 
     public ImportDescr(final String clazzName) {
+        this( clazzName, false );
+    }
+
+    public ImportDescr(final boolean isEvent) {
+        this( null, isEvent );
+    }
+
+    public ImportDescr(final String clazzName, final boolean isEvent ) {
         this.target = clazzName;
+        this.event = isEvent;
     }
 
     public String getTarget() {
@@ -79,4 +90,8 @@
         return "import " + this.target;
     }
 
+    public boolean isEvent() {
+        return this.event;
+    }
+
 }

Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -121,7 +121,8 @@
         } else {
             try {
                 final Class userProvidedClass = context.getDialect().getTypeResolver().resolveType( patternDescr.getObjectType() );
-                objectType = new ClassObjectType( userProvidedClass );
+                final boolean isEvent = context.getPkg().isEvent( userProvidedClass );
+                objectType = new ClassObjectType( userProvidedClass, isEvent );
             } catch ( final ClassNotFoundException e ) {
                 context.getErrors().add( new RuleError( context.getRule(),
                                                         patternDescr,

Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaFunctionBuilder.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaFunctionBuilder.java	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaFunctionBuilder.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -48,7 +48,7 @@
                   pkg.getName() );
 
         vars.put( "imports",
-                  pkg.getImports() );
+                  pkg.getImports().keySet() );
 
         final List staticImports = new LinkedList();
         for( Iterator it = pkg.getStaticImports().iterator(); it.hasNext(); ) {

Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaRuleClassBuilder.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaRuleClassBuilder.java	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaRuleClassBuilder.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -47,7 +47,7 @@
         final StringBuffer buffer = new StringBuffer();
         buffer.append( "package " + context.getPkg().getName() + ";" + lineSeparator );
 
-        for ( final Iterator it = context.getPkg().getImports().iterator(); it.hasNext(); ) {
+        for ( final Iterator it = context.getPkg().getImports().keySet().iterator(); it.hasNext(); ) {
             buffer.append( "import " + it.next() + ";" + lineSeparator );
         }
 

Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/resources/org/drools/lang/DRL.g
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2007-11-19 21:23:33 UTC (rev 16677)
@@ -223,6 +223,7 @@
 statement
 	:	a=rule_attribute { this.packageDescr.addAttribute( a ); }
 	|	function_import_statement 
+	|	event_import_statement
 	|	import_statement 
 	|	global 
 	|	function 
@@ -273,7 +274,22 @@
 	        import_name[importDecl] opt_semicolon
 	;
 
+event_import_statement
+        @init {
+        	ImportDescr importDecl = null;
+        }
+	:	IMPORT EVENT 
+	        {
+	            importDecl = factory.createEventImport( );
+	            importDecl.setStartCharacter( ((CommonToken)$IMPORT).getStartIndex() );
+		    if (packageDescr != null) {
+			packageDescr.addImport( importDecl );
+		    }
+	        }
+	        import_name[importDecl] opt_semicolon
+	;
 
+
 import_name[ImportDescr importDecl] returns [String name]
 	@init {
 		$name = null;
@@ -1662,6 +1678,7 @@
 	|	FUNCTION
 	|	GLOBAL
 	|	IMPORT  
+	|	EVENT
 	|	RULE
 	|	QUERY 
         |       TEMPLATE        
@@ -1751,6 +1768,8 @@
 
 FUNCTION :	'function';
 
+EVENT :		'event';
+
 GLOBAL	:	'global';
 	
 RULE    :	'rule';

Added: labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/OrderEvent.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/OrderEvent.java	                        (rev 0)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/OrderEvent.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2007 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Created on Oct 17, 2007
+ */
+package org.drools;
+
+/**
+ * A simple order event POJO
+ * 
+ * @author etirelli
+ */
+public class OrderEvent {
+    
+    private String id;
+    private String customer;
+    private double total;
+    
+    public OrderEvent(String id,
+                      String customer,
+                      double total) {
+        super();
+        this.id = id;
+        this.customer = customer;
+        this.total = total;
+    }
+
+    public String getCustomer() {
+        return customer;
+    }
+
+    public void setCustomer(String customer) {
+        this.customer = customer;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public double getTotal() {
+        return total;
+    }
+
+    public void setTotal(double total) {
+        this.total = total;
+    }
+
+}

Added: labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/StockTick.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/StockTick.java	                        (rev 0)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/StockTick.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -0,0 +1,50 @@
+package org.drools;
+
+public class StockTick {
+    private long seq;
+    private String company;
+    private double price;
+    private long time;
+    
+    public StockTick() {
+    }
+
+    public StockTick(long seq,
+                     String company,
+                     double price,
+                     long time) {
+        super();
+        this.seq = seq;
+        this.company = company;
+        this.price = price;
+        this.time = time;
+    }
+
+    public String getCompany() {
+        return company;
+    }
+    public void setCompany(String company) {
+        this.company = company;
+    }
+    public double getPrice() {
+        return price;
+    }
+    public void setPrice(double price) {
+        this.price = price;
+    }
+    public long getSeq() {
+        return seq;
+    }
+    public void setSeq(long seq) {
+        this.seq = seq;
+    }
+    public long getTime() {
+        return time;
+    }
+    public void setTime(long time) {
+        this.time = time;
+    }
+    
+    
+
+}

Added: labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java	                        (rev 0)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -0,0 +1,165 @@
+package org.drools.integrationtests;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.drools.FactHandle;
+import org.drools.RuleBase;
+import org.drools.RuleBaseConfiguration;
+import org.drools.RuleBaseFactory;
+import org.drools.StockTick;
+import org.drools.WorkingMemory;
+import org.drools.common.InternalFactHandle;
+import org.drools.compiler.DrlParser;
+import org.drools.compiler.DroolsParserException;
+import org.drools.compiler.PackageBuilder;
+import org.drools.lang.descr.PackageDescr;
+import org.drools.rule.Package;
+
+public class CepEspTest extends TestCase {
+    protected RuleBase getRuleBase() throws Exception {
+
+        return RuleBaseFactory.newRuleBase( RuleBase.RETEOO,
+                                            null );
+    }
+
+    protected RuleBase getRuleBase(final RuleBaseConfiguration config) throws Exception {
+
+        return RuleBaseFactory.newRuleBase( RuleBase.RETEOO,
+                                            config );
+    }
+
+    private RuleBase loadRuleBase(final Reader reader) throws IOException,
+                                                      DroolsParserException,
+                                                      Exception {
+        final DrlParser parser = new DrlParser();
+        final PackageDescr packageDescr = parser.parse( reader );
+        if ( parser.hasErrors() ) {
+            System.out.println( parser.getErrors() );
+            Assert.fail( "Error messages in parser, need to sort this our (or else collect error messages)" );
+        }
+        // pre build the package
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addPackage( packageDescr );
+        final Package pkg = builder.getPackage();
+
+        // add the package to a rulebase
+        final RuleBase ruleBase = getRuleBase();
+        ruleBase.addPackage( pkg );
+        // load up the rulebase
+        return ruleBase;
+    }
+
+    public void testEventAssertion() throws Exception {
+        // read in the source
+        final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_CEP_SimpleEventAssertion.drl" ) );
+        final RuleBase ruleBase = loadRuleBase( reader );
+
+        final WorkingMemory wm = ruleBase.newStatefulSession();
+        final List results = new ArrayList();
+
+        wm.setGlobal( "results",
+                      results );
+
+        StockTick tick1 = new StockTick( 1,
+                                         "DROO",
+                                         50,
+                                         System.currentTimeMillis() );
+        StockTick tick2 = new StockTick( 2,
+                                         "ACME",
+                                         10,
+                                         System.currentTimeMillis() );
+        StockTick tick3 = new StockTick( 3,
+                                         "ACME",
+                                         10,
+                                         System.currentTimeMillis() );
+        StockTick tick4 = new StockTick( 4,
+                                         "DROO",
+                                         50,
+                                         System.currentTimeMillis() );
+        
+        InternalFactHandle handle1 = (InternalFactHandle) wm.insert( tick1 );
+        InternalFactHandle handle2 = (InternalFactHandle) wm.insert( tick2 );
+        InternalFactHandle handle3 = (InternalFactHandle) wm.insert( tick3 );
+        InternalFactHandle handle4 = (InternalFactHandle) wm.insert( tick4 );
+        
+        assertNotNull( handle1 );
+        assertNotNull( handle2 );
+        assertNotNull( handle3 );
+        assertNotNull( handle4 );
+        
+        // FIXME
+//        assertTrue( handle1.isEvent() );
+//        assertTrue( handle2.isEvent() );
+//        assertTrue( handle3.isEvent() );
+//        assertTrue( handle4.isEvent() );
+        
+        wm.fireAllRules();
+
+        assertEquals( 2,
+                      results.size() );
+
+    }
+
+    public void FIXME_testSimpleTimeWindow() throws Exception {
+        // read in the source
+        final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_CEP_SimpleTimeWindow.drl" ) );
+        final RuleBase ruleBase = loadRuleBase( reader );
+
+        final WorkingMemory wm = ruleBase.newStatefulSession();
+        final List results = new ArrayList();
+
+        wm.setGlobal( "results",
+                      results );
+
+        // how to initialize the clock?
+        // how to configure the clock?
+        //        PseudoSessionClock clock = wm.getSessionClock();
+        //        
+        //        clock.advanceTime( 10000 ); // 10 seconds
+        //        wm.insert( new OrderEvent("1", "customer A", 70) );
+        //        wm.fireAllRules();
+        //
+        //        clock.advanceTime( 10000 ); // 10 seconds
+        //        wm.insert( new OrderEvent("2", "customer A", 60) );
+        //        wm.fireAllRules();
+        //
+        //        clock.advanceTime( 10000 ); // 10 seconds
+        //        wm.insert( new OrderEvent("3", "customer A", 50) );
+        //        wm.fireAllRules();
+        //
+        //        clock.advanceTime( 10000 ); // 10 seconds
+        //        wm.insert( new OrderEvent("4", "customer A", 30) );
+        //        wm.fireAllRules();
+        //
+        //        clock.advanceTime( 10000 ); // 10 seconds
+        //        wm.insert( new OrderEvent("5", "customer A", 70) );
+        //        wm.fireAllRules();
+        //        
+        //        clock.advanceTime( 10000 ); // 10 seconds
+        //        wm.insert( new OrderEvent("6", "customer A", 80) );
+        //        wm.fireAllRules();
+
+    }
+
+    //    public void testTransactionCorrelation() throws Exception {
+    //        // read in the source
+    //        final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_TransactionCorrelation.drl" ) );
+    //        final RuleBase ruleBase = loadRuleBase( reader );
+    //
+    //        final WorkingMemory wm = ruleBase.newStatefulSession();
+    //        final List results = new ArrayList();
+    //
+    //        wm.setGlobal( "results",
+    //                      results );
+    //
+    //
+    //    }
+
+}

Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -1,5 +1,6 @@
-package org.drools.integrationtests;
 
+ package org.drools.integrationtests;
+
 /*
  * Copyright 2005 JBoss Inc
  *

Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -100,8 +100,9 @@
         final DrlParser parser = new DrlParser();
         final PackageDescr pkg = parser.parse( new StringReader( source ) );
         assertFalse( parser.hasErrors() );
-        assertEquals( "foo.bar.baz", pkg.getName() );        
-    }    
+        assertEquals( "foo.bar.baz",
+                      pkg.getName() );
+    }
 
     public void testCompilationUnit() throws Exception {
         final String source = "package foo; import com.foo.Bar; import com.foo.Baz;";
@@ -3534,6 +3535,26 @@
 
     }
 
+    public void testEventImport() throws Exception {
+        final DRLParser parser = parseResource( "import_event.drl" );
+        parser.compilation_unit();
+
+        assertFalse( "Parser should not raise errors: " + parser.getErrorMessages().toString(),
+                     parser.hasErrors() );
+
+        final PackageDescr pack = parser.getPackageDescr();
+
+        final List imports = pack.getImports();
+
+        assertEquals( 1,
+                      imports.size() );
+        
+        final ImportDescr descr = (ImportDescr) imports.get( 0 );
+        
+        assertTrue( descr.isEvent() );
+
+    }
+
     private DRLParser parse(final String text) throws Exception {
         this.parser = newParser( newTokenStream( newLexer( newCharStream( text ) ) ) );
         return this.parser;

Added: labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_SimpleEventAssertion.drl
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_SimpleEventAssertion.drl	                        (rev 0)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_SimpleEventAssertion.drl	2007-11-19 21:23:33 UTC (rev 16677)
@@ -0,0 +1,12 @@
+package org.drools;
+
+import event org.drools.StockTick;
+
+global java.util.List results;
+
+rule "Check event"
+when
+    $st : StockTick( company == "ACME" )
+then
+    results.add( $st );
+end

Added: labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_SimpleTimeWindow.drl
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_SimpleTimeWindow.drl	                        (rev 0)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_SimpleTimeWindow.drl	2007-11-19 21:23:33 UTC (rev 16677)
@@ -0,0 +1,17 @@
+package org.drools;
+
+import event org.drools.OrderEvent;
+
+global java.util.List results;
+
+rule "average over threshold"
+    time-window 30 seconds
+when
+    Number( $avg : intValue >= 50 ) from accumulate(
+              OrderEvent( $amt : amount ),
+              average( $amt ) )
+then
+    System.out.println( "Over threshold: "+$avg );
+    results.add( $amt )
+end
+

Added: labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/lang/import_event.drl
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/lang/import_event.drl	                        (rev 0)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/lang/import_event.drl	2007-11-19 21:23:33 UTC (rev 16677)
@@ -0,0 +1,9 @@
+package org.drools;
+
+import event org.drools.StockTick;
+
+rule "Check event"
+when
+    StockTick( company == "ACME" )
+then
+end

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/ClassObjectType.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/ClassObjectType.java	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/ClassObjectType.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -32,15 +32,15 @@
     /**
      * 
      */
-    private static final long              serialVersionUID = 400L;
+    private static final long serialVersionUID = 400L;
 
     /** Java object class. */
-    protected Class                        objectTypeClass;
+    protected Class           objectTypeClass;
 
-    protected ValueType                    valueType;
+    protected ValueType       valueType;
 
+    private boolean           isEvent;
 
-
     // ------------------------------------------------------------
     // Constructors
     // ------------------------------------------------------------
@@ -52,9 +52,21 @@
      *            Java object class.
      */
     public ClassObjectType(final Class objectTypeClass) {
+        this( objectTypeClass, false );
+    }
+
+    /**
+     * Creates a new class object type
+     * 
+     * @param objectTypeClass the class represented by this class object type
+     * @param isEvent true if it is an event class, false otherwise
+     */
+    public ClassObjectType(final Class objectTypeClass, final boolean isEvent) {
         this.objectTypeClass = objectTypeClass;
+        this.isEvent = isEvent;
         this.valueType = ValueType.determineValueType( objectTypeClass );
     }
+
     // ------------------------------------------------------------
     // Instance methods
     // ------------------------------------------------------------
@@ -99,25 +111,33 @@
     public boolean matches(final Object object) {
         return getClassType().isInstance( object );
     }
-    
+
     public boolean isAssignableFrom(Object object) {
         return this.objectTypeClass.isAssignableFrom( (Class) object );
     }
 
     public boolean isAssignableFrom(ObjectType objectType) {
-        if ( !( objectType instanceof ClassObjectType ) ) {
+        if ( !(objectType instanceof ClassObjectType) ) {
             return false;
         } else {
             return this.objectTypeClass.isAssignableFrom( ((ClassObjectType) objectType).getClassType() );
         }
-    }    
-    
+    }
+
     public ValueType getValueType() {
         return this.valueType;
     }
 
+    public boolean isEvent() {
+        return isEvent;
+    }
+
+    public void setEvent(boolean isEvent) {
+        this.isEvent = isEvent;
+    }
+
     public String toString() {
-        return "[ClassObjectType class=" + getClassType().getName() + "]";
+        return "[ClassObjectType "+( this.isEvent ? "event=" : "class=" )+ getClassType().getName() + "]";
     }
 
     /**
@@ -137,7 +157,7 @@
         if ( object == null || object.getClass() != ClassObjectType.class ) {
             return false;
         }
-
+        
         return this.objectTypeClass == ((ClassObjectType) object).objectTypeClass;
     }
 

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/ClassTypeResolver.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/ClassTypeResolver.java	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/base/ClassTypeResolver.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -16,12 +16,10 @@
  * limitations under the License.
  */
 
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -30,7 +28,7 @@
 public class ClassTypeResolver
     implements
     TypeResolver {
-    private Set              imports          = Collections.EMPTY_SET;
+    private Set<String>      imports          = Collections.emptySet();
 
     private ClassLoader      classLoader;
 
@@ -56,7 +54,7 @@
                               "C" );
     }
 
-    public ClassTypeResolver(final Set imports,
+    public ClassTypeResolver(final Set<String> imports,
                              final ClassLoader classLoader) {
         this.imports = imports;
 
@@ -79,7 +77,7 @@
     /* (non-Javadoc)
      * @see org.drools.semantics.java.TypeResolver#getImports()
      */
-    public Set getImports() {
+    public Set<String> getImports() {
         return this.imports;
     }
 
@@ -93,7 +91,7 @@
      */
     public void addImport(final String importEntry) {
         if ( this.imports == Collections.EMPTY_SET ) {
-            this.imports = new HashSet();
+            this.imports = new HashSet<String>();
         }
         this.imports.add( importEntry );
     }

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -43,6 +43,7 @@
 import org.drools.event.RuleBaseEventListener;
 import org.drools.event.RuleBaseEventSupport;
 import org.drools.rule.CompositePackageClassLoader;
+import org.drools.rule.ImportDeclaration;
 import org.drools.rule.InvalidPatternException;
 import org.drools.rule.MapBackedClassLoader;
 import org.drools.rule.Package;
@@ -74,7 +75,7 @@
 
     protected RuleBaseConfiguration                 config;
 
-    protected Map                                   pkgs;
+    protected Map<String, Package>                  pkgs;
 
     protected Map                                   processes;
 
@@ -148,7 +149,7 @@
         this.packageClassLoader = new CompositePackageClassLoader( this.config.getClassLoader() );
         this.classLoader = new MapBackedClassLoader( this.config.getClassLoader() );
         this.packageClassLoader.addClassLoader( this.classLoader );
-        this.pkgs = new HashMap();
+        this.pkgs = new HashMap<String, Package>();
         this.processes = new HashMap();
         this.globals = new HashMap();
         this.statefulSessions = new ObjectHashSet();
@@ -435,7 +436,7 @@
     private void mergePackage(final Package pkg,
                               final Package newPkg) throws PackageIntegrationException {
         final Map globals = pkg.getGlobals();
-        final Set imports = pkg.getImports();
+        final Map<String, ImportDeclaration> imports = pkg.getImports();
 
         // First update the binary files
         // @todo: this probably has issues if you add classes in the incorrect order - functions, rules, invokers.
@@ -448,7 +449,7 @@
         }
 
         // Merge imports
-        imports.addAll( newPkg.getImports() );
+        imports.putAll( newPkg.getImports() );
 
         // Add invokers
         compilationData.putAllInvokers( newCompilationData.getInvokers() );
@@ -744,6 +745,15 @@
         // since the event support is thread-safe, no need for locks... right?
         return this.eventSupport.getEventListeners();
     }
+    
+    public boolean isEvent( Class clazz ) {
+        for( Package pkg : this.pkgs.values() ) {
+            if( pkg.isEvent( clazz ) ) {
+                return true;
+            }
+        }
+        return false;
+    }
 
     public static class ReloadPackageCompilationData
         implements

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -163,4 +163,12 @@
     public void setEqualityKey(final EqualityKey key) {
         this.key = key;
     }
+
+    /**
+     * Always returns false, since the DefaultFactHandle is
+     * only used for regular Facts, and not for Events
+     */
+    public boolean isEvent() {
+        return false;
+    }
 }

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/InternalFactHandle.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/InternalFactHandle.java	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/InternalFactHandle.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -42,4 +42,13 @@
     public boolean isShadowFact();
 
     public void setShadowFact(boolean shadowFact);
+    
+    /**
+     * Returns true if this FactHandle represents
+     * and Event or false if this FactHandle represents
+     * a regular Fact
+     * 
+     * @return
+     */
+    public boolean isEvent();
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/InternalRuleBase.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/InternalRuleBase.java	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/InternalRuleBase.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -23,7 +23,6 @@
 import org.drools.RuleBase;
 import org.drools.RuleBaseConfiguration;
 import org.drools.StatefulSession;
-import org.drools.WorkingMemory;
 import org.drools.reteoo.Rete;
 import org.drools.reteoo.ReteooWorkingMemory;
 import org.drools.rule.CompositePackageClassLoader;
@@ -104,5 +103,13 @@
     public InternalWorkingMemory[] getWorkingMemories();
     
     public Process getProcess(String id);
+    
+    /**
+     * Returns true if clazz represents an Event class. False otherwise.
+     *  
+     * @param clazz
+     * @return
+     */
+    public boolean isEvent( Class clazz );
 
 }

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/facttemplates/FactTemplateObjectType.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/facttemplates/FactTemplateObjectType.java	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/facttemplates/FactTemplateObjectType.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -16,7 +16,6 @@
  * limitations under the License.
  */
 
-import org.drools.base.ClassObjectType;
 import org.drools.base.ValueType;
 import org.drools.spi.ObjectType;
 
@@ -42,11 +41,13 @@
     /** FieldTemplate. */
     protected FactTemplate    factTemplate;
 
+    private boolean           isEvent;
+
     // ------------------------------------------------------------
     // Constructors
     // ------------------------------------------------------------
 
-    /**
+     /**
      * Construct.
      * 
      * @param objectTypeClass
@@ -90,27 +91,35 @@
             return false;
         }
     }
-    
+
     public boolean isAssignableFrom(Object object) {
         return this.factTemplate.equals( object );
-    }    
-    
+    }
+
     public boolean isAssignableFrom(ObjectType objectType) {
-        if ( ! ( objectType instanceof FactTemplateObjectType ) ) {
+        if ( !(objectType instanceof FactTemplateObjectType) ) {
             return false;
         } else {
-            return this.factTemplate.equals(  ((FactTemplateObjectType) objectType).getFactTemplate() );
+            return this.factTemplate.equals( ((FactTemplateObjectType) objectType).getFactTemplate() );
         }
-    }     
+    }
 
     public ValueType getValueType() {
         return ValueType.FACTTEMPLATE_TYPE;
     }
-    
-    public String toString() {
-        return "[ClassObjectType class=" + this.factTemplate.getName() + "]";
+
+    public boolean isEvent() {
+        return isEvent;
     }
 
+    public void setEvent(boolean isEvent) {
+        this.isEvent = isEvent;
+    }
+
+   public String toString() {
+        return "[FactTemplateObjectType "+( this.isEvent ? "event=" : "template=") + this.factTemplate.getName() + "]";
+    }
+
     /**
      * Determine if another object is equal to this.
      * 

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/Rete.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/Rete.java	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/Rete.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -151,7 +151,10 @@
 
             ojectTypeConf = (ObjectTypeConf) memory.get( cls );
             if ( ojectTypeConf == null ) {
+                
+                final boolean isEvent = this.ruleBase.isEvent( cls );
                 ojectTypeConf = new ClassObjectTypeConf( cls,
+                                                         isEvent,
                                                          this.ruleBase );
                 memory.put( cls,
                             ojectTypeConf,
@@ -432,13 +435,13 @@
         protected transient ObjectInstantiator instantiator;
 
         private ObjectTypeNode                 concreteObjectTypeNode;
-
-        public ClassObjectTypeConf(Class clazz,
-                                   InternalRuleBase ruleBase) {
+        
+        public ClassObjectTypeConf(final Class clazz, final boolean isEvent,
+                                   final InternalRuleBase ruleBase) {
             this.cls = clazz;
             this.ruleBase = ruleBase;
 
-            ObjectType objectType = new ClassObjectType( clazz );
+            ObjectType objectType = new ClassObjectType( clazz, isEvent );
             this.concreteObjectTypeNode = (ObjectTypeNode) ruleBase.getRete().getObjectTypeNodes().get( objectType );
             if ( this.concreteObjectTypeNode == null ) {
                 BuildContext context = new BuildContext( ruleBase,

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -20,8 +20,6 @@
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.io.Serializable;
-import java.util.HashMap;
-import java.util.WeakHashMap;
 
 import org.drools.FactException;
 import org.drools.FactHandle;
@@ -29,26 +27,20 @@
 import org.drools.RuleBaseConfiguration;
 import org.drools.StatefulSession;
 import org.drools.StatelessSession;
-import org.drools.base.FireAllRulesRuleBaseUpdateListener;
 import org.drools.common.AbstractRuleBase;
 import org.drools.common.DefaultFactHandle;
 import org.drools.common.InternalFactHandle;
 import org.drools.common.InternalWorkingMemory;
 import org.drools.concurrent.CommandExecutor;
-import org.drools.concurrent.DefaultExecutorService;
 import org.drools.concurrent.ExecutorService;
-import org.drools.rule.CompositePackageClassLoader;
+import org.drools.reteoo.ReteooWorkingMemory.WorkingMemoryReteAssertAction;
 import org.drools.rule.InvalidPatternException;
 import org.drools.rule.Rule;
-import org.drools.reteoo.ReteooWorkingMemory.WorkingMemoryReteAssertAction;
 import org.drools.spi.FactHandleFactory;
 import org.drools.spi.PropagationContext;
 import org.drools.spi.RuleBaseUpdateListener;
 import org.drools.spi.RuleBaseUpdateListenerFactory;
-import org.drools.util.ObjectHashSet;
 
-import sun.security.x509.IssuerAlternativeNameExtension;
-
 /**
  * Implementation of <code>RuleBase</code>.
  * 

Added: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/rule/ImportDeclaration.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/rule/ImportDeclaration.java	                        (rev 0)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/rule/ImportDeclaration.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -0,0 +1,130 @@
+/*
+ * Copyright 2007 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Created on Nov 7, 2007
+ */
+package org.drools.rule;
+
+import java.io.Serializable;
+
+/**
+ * A class to represent an import declaration. That declaration
+ * may have additional metadata associated to it, like a flag
+ * stating if the imported class is an event or not
+ * 
+ * @author etirelli
+ */
+public class ImportDeclaration implements Serializable {
+
+    private static final long serialVersionUID = 6410032114027977766L;
+
+    private String target;
+    private boolean isEvent;
+
+    /**
+     * Creates an empty import declaration 
+     */
+    public ImportDeclaration() {
+        this( null, false );
+    }
+
+    /**
+     * Creates an import declaration for the given target.
+     * 
+     * @param target
+     */
+    public ImportDeclaration( String target ) {
+        this( target, false ); 
+    }
+    
+    /**
+     * Creates an import declaration for the given target.
+     * 
+     * @param target the import target
+     * @param isEvent true if the target is an event-type target, false otherwise.
+     */
+    public ImportDeclaration(String target,
+                             boolean isEvent) {
+        super();
+        this.target = target;
+        this.isEvent = isEvent;
+    }
+
+    public boolean isEvent() {
+        return isEvent;
+    }
+
+    public void setEvent(boolean isEvent) {
+        this.isEvent = isEvent;
+    }
+
+    public String getTarget() {
+        return target;
+    }
+
+    public void setTarget(String target) {
+        this.target = target;
+    }
+
+    public int hashCode() {
+        final int PRIME = 31;
+        int result = 1;
+        result = PRIME * result + (isEvent ? 1231 : 1237);
+        result = PRIME * result + ((target == null) ? 0 : target.hashCode());
+        return result;
+    }
+
+    public boolean equals(Object obj) {
+        if ( this == obj ) return true;
+        if ( obj == null ) return false;
+        if ( getClass() != obj.getClass() ) return false;
+        final ImportDeclaration other = (ImportDeclaration) obj;
+        if ( isEvent != other.isEvent ) return false;
+        if ( target == null ) {
+            if ( other.target != null ) return false;
+        } else if ( !target.equals( other.target ) ) return false;
+        return true;
+    }
+
+    /**
+     * Returns true if this ImportDeclaration correctly matches to
+     * the given clazz
+     * 
+     * @param name
+     * @return
+     */
+    public boolean matches( Class clazz ) {
+        // fully qualified import?
+        if( this.target.equals( clazz.getName() ) ) {
+            return true;
+        }
+        
+        // wild card imports
+        if( this.target.endsWith( ".*" ) ) {
+            String prefix = this.target.substring( 0, this.target.indexOf( ".*" ) );
+            
+            // package import: import my.package.*
+            if( prefix.equals( clazz.getPackage().getName() ) ) {
+                return true;
+            }
+            
+            // inner class imports with wild card?
+            // by looking at the ClassTypeResolver class, it seems we do not support
+            // the usage of wild cards when importing static inner classes like the
+            // java static imports allow
+        }
+        return false;
+    }
+}

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/rule/Package.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/rule/Package.java	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/rule/Package.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -57,37 +57,37 @@
     /**
      *
      */
-    private static final long      serialVersionUID = 400L;
+    private static final long              serialVersionUID = 400L;
 
     // ------------------------------------------------------------
     // Instance members
     // ------------------------------------------------------------
 
     /** Name of the pkg. */
-    private String                 name;
+    private String                         name;
 
     /** Set of all rule-names in this <code>Package</code>. */
-    private Map                    rules;
+    private Map                            rules;
 
-    private Set                    imports;
+    private Map<String, ImportDeclaration> imports;
 
-    private List                   functions;
+    private List                           functions;
 
-    private Set                    staticImports;
+    private Set                            staticImports;
 
-    private Map                    globals;
+    private Map                            globals;
 
-    private Map                    factTemplates;
+    private Map                            factTemplates;
 
-    private Map                    ruleFlows;
+    private Map                            ruleFlows;
 
-    private PackageCompilationData packageCompilationData;
+    private PackageCompilationData         packageCompilationData;
 
     /** This is to indicate the the package has no errors during the compilation/building phase */
-    private boolean                valid            = true;
+    private boolean                        valid            = true;
 
     /** This will keep a summary error message as to why this package is not valid */
-    private String                 errorSummary;
+    private String                         errorSummary;
 
     // ------------------------------------------------------------
     // Constructors
@@ -121,7 +121,7 @@
     public Package(final String name,
                    ClassLoader parentClassLoader) {
         this.name = name;
-        this.imports = new HashSet();
+        this.imports = new HashMap<String, ImportDeclaration>();
         this.staticImports = Collections.EMPTY_SET;
         this.rules = new LinkedHashMap();
         this.ruleFlows = Collections.EMPTY_MAP;
@@ -150,12 +150,11 @@
         stream.writeObject( this.imports );
         stream.writeObject( this.staticImports );
         stream.writeObject( this.functions );
-        stream.writeObject( this.factTemplates );        
+        stream.writeObject( this.factTemplates );
         stream.writeObject( this.ruleFlows );
         stream.writeObject( this.globals );
         stream.writeBoolean( this.valid );
 
-
         // Rules must be restored by an ObjectInputStream that can resolve using a given ClassLoader to handle seaprately by storing as
         // a byte[]
         final ByteArrayOutputStream bos = new ByteArrayOutputStream();
@@ -175,11 +174,11 @@
         // PackageCompilationData must be restored before Rules as it has the ClassLoader needed to resolve the generated code references in Rules
         this.packageCompilationData = (PackageCompilationData) stream.readObject();
         this.name = (String) stream.readObject();
-        this.imports = (Set) stream.readObject();
+        this.imports = (Map<String, ImportDeclaration>) stream.readObject();
         this.staticImports = (Set) stream.readObject();
         this.functions = (List) stream.readObject();
         this.factTemplates = (Map) stream.readObject();
-        this.ruleFlows = (Map) stream.readObject();        
+        this.ruleFlows = (Map) stream.readObject();
         this.globals = (Map) stream.readObject();
         this.valid = stream.readBoolean();
 
@@ -189,7 +188,6 @@
         //  Use a custom ObjectInputStream that can resolve against a given classLoader
         final DroolsObjectInputStream streamWithLoader = new DroolsObjectInputStream( new ByteArrayInputStream( bytes ),
                                                                                       this.packageCompilationData.getClassLoader() );
-        
 
         this.rules = (Map) streamWithLoader.readObject();
     }
@@ -207,15 +205,15 @@
         return this.name;
     }
 
-    public void addImport(final String importEntry) {
-        this.imports.add( importEntry );
+    public void addImport(final ImportDeclaration importDecl) {
+        this.imports.put( importDecl.getTarget(), importDecl );
     }
 
     public void removeImport(final String importEntry) {
         this.imports.remove( importEntry );
     }
 
-    public Set getImports() {
+    public Map<String, ImportDeclaration> getImports() {
         return this.imports;
     }
 
@@ -264,7 +262,7 @@
     }
 
     public PackageCompilationData removeFunction(final String functionName) {
-        if ( !this.functions.remove( functionName )) {
+        if ( !this.functions.remove( functionName ) ) {
             return null;
         }
         this.packageCompilationData.remove( this.name + "." + StringUtils.ucFirst( functionName ) );
@@ -449,15 +447,44 @@
     public int hashCode() {
         return this.name.hashCode();
     }
+    
+    /**
+     * Returns true if clazz is imported as an Event class in this package 
+     * @param clazz
+     * @return
+     */
+    public boolean isEvent( Class clazz ) {
+        if( clazz == null ) {
+            return false;
+        }
+        // check if clazz is resolved by any of the import declarations
+        for( ImportDeclaration imp : this.imports.values() ) {
+            if( imp.isEvent() && imp.matches( clazz ) ) {
+                return true;
+            }
+        }
+        // if it is not resolved, try superclass 
+        if( this.isEvent( clazz.getSuperclass() ) ) {
+            return true;
+        }
+        
+        // if it is no resolved, try interfaces
+        for( Class interf : clazz.getInterfaces() ) {
+            if( this.isEvent( interf ) ) {
+                return true;
+            }
+        }
+        return false;
+    }
 
     public void clear() {
         this.rules.clear();
         this.packageCompilationData.clear();
-        this.ruleFlows.clear();       
+        this.ruleFlows.clear();
         this.imports.clear();
         this.functions.clear();
         this.staticImports.clear();
         this.globals.clear();
-        this.factTemplates.clear();        
+        this.factTemplates.clear();
     }
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/spi/ObjectType.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/spi/ObjectType.java	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/spi/ObjectType.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -18,7 +18,6 @@
 
 import java.io.Serializable;
 
-import org.drools.base.ClassObjectType;
 import org.drools.base.ValueType;
 
 /**
@@ -45,7 +44,14 @@
     
     boolean isAssignableFrom(Object object);
     
-    boolean isAssignableFrom(ObjectType objectType);    
+    boolean isAssignableFrom(ObjectType objectType);
+    
+    /**
+     * Returns true if the object type represented by this object
+     * is an event object type. False otherwise.
+     * @return
+     */
+    boolean isEvent();
 
     ValueType getValueType();
 }
\ No newline at end of file

Added: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/temporal/PseudoSessionClock.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/temporal/PseudoSessionClock.java	                        (rev 0)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/temporal/PseudoSessionClock.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2007 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Created on Oct 17, 2007
+ */
+package org.drools.temporal;
+
+/**
+ * A PseudoSessionClock is a clock that allows the user to explicitly 
+ * control current time.
+ * 
+ * @author etirelli
+ *
+ */
+public class PseudoSessionClock
+    implements
+    SessionClock {
+    
+    private long timer;
+
+    public PseudoSessionClock() {
+        this.timer = 0;
+    }
+    
+    /* (non-Javadoc)
+     * @see org.drools.temporal.SessionClock#getCurrentTime()
+     */
+    public long getCurrentTime() {
+        return this.timer;
+    }
+    
+    public long advanceTime( long millisecs ) {
+        this.timer += millisecs;
+        return this.timer;
+    }
+
+}

Added: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/temporal/SessionClock.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/temporal/SessionClock.java	                        (rev 0)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/temporal/SessionClock.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2007 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Created on Oct 17, 2007
+ */
+package org.drools.temporal;
+
+/**
+ * A clock interface that all engine clocks must implement
+ * 
+ * @author etirelli
+ */
+public interface SessionClock {
+    
+    /**
+     * Returns the current time. There is no semantics attached
+     * to the long return value, so it will depend on the actual
+     * implementation. For isntance, for a real clock it may be
+     * milliseconds.
+     * 
+     * @return The current time. The unit of the time, depends on
+     * the actual clock implementation.
+     * 
+     */
+    public long getCurrentTime();
+    
+}

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/test/java/org/drools/spi/MockObjectType.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/test/java/org/drools/spi/MockObjectType.java	2007-11-19 09:30:51 UTC (rev 16676)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/test/java/org/drools/spi/MockObjectType.java	2007-11-19 21:23:33 UTC (rev 16677)
@@ -39,6 +39,8 @@
     private static final long serialVersionUID = 400L;
     /** Java object class. */
     private boolean           matches;
+    
+    private boolean           isEvent;
 
     // ------------------------------------------------------------
     // Constructors
@@ -88,4 +90,12 @@
         return ValueType.OBJECT_TYPE;
     }
 
+    public boolean isEvent() {
+        return isEvent;
+    }
+
+    public void setEvent(boolean isEvent) {
+        this.isEvent = isEvent;
+    }
+
 }
\ No newline at end of file




More information about the jboss-svn-commits mailing list