[jboss-svn-commits] JBL Code SVN: r11531 - in labs/jbossrules/trunk: drools-compiler/src/main/resources/org/drools/lang and 6 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Apr 30 18:47:40 EDT 2007


Author: tirelli
Date: 2007-04-30 18:47:40 -0400 (Mon, 30 Apr 2007)
New Revision: 11531

Added:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BaseMemberOfEvaluator.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BaseNotMemberOfEvaluator.java
Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ArrayFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigDecimalFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigIntegerFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BooleanFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ByteFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/CharacterFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DateFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DoubleFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/FloatFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/IntegerFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/LongFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ObjectFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/Operator.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ShortFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/StringFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/field/BooleanFieldImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/field/DoubleFieldImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/field/LongFieldImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/field/ObjectFieldImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FieldValue.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/EvaluatorFactoryTest.java
Log:
JBRULES-577: adding core support to memberOf and not memberOf operators

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0b7 /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2007-04-27 11:20:36
+// $ANTLR 3.0b7 /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2007-04-30 13:54:16
 
 	package org.drools.lang;
 
@@ -10,135 +10,101 @@
 import java.util.Map;
 import java.util.HashMap;
 public class DRLLexer extends Lexer {
-    public static final int EXISTS=49;
+    public static final int EXISTS=51;
     public static final int T79=79;
     public static final int AUTO_FOCUS=22;
     public static final int END=10;
-    public static final int HexDigit=57;
-    public static final int FORALL=52;
+    public static final int HexDigit=59;
+    public static final int FORALL=54;
     public static final int TEMPLATE=11;
     public static final int T70=70;
-    public static final int MISC=63;
-    public static final int FLOAT=41;
+    public static final int MISC=65;
+    public static final int FLOAT=43;
     public static final int T74=74;
     public static final int QUERY=9;
-    public static final int THEN=53;
+    public static final int THEN=55;
     public static final int RULE=12;
     public static final int INIT=30;
     public static final int IMPORT=6;
     public static final int OR=35;
     public static final int PACKAGE=5;
     public static final int DATE_EFFECTIVE=14;
-    public static final int T64=64;
-    public static final int AND=47;
+    public static final int AND=49;
     public static final int FUNCTION=7;
     public static final int GLOBAL=8;
-    public static final int EscapeSequence=56;
+    public static final int EscapeSequence=58;
     public static final int DIALECT=27;
     public static final int INT=20;
     public static final int LOCK_ON_ACTIVE=28;
     public static final int DATE_EXPIRES=16;
-    public static final int LEFT_SQUARE=45;
+    public static final int T81=81;
+    public static final int LEFT_SQUARE=47;
     public static final int CONTAINS=38;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=60;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=62;
     public static final int T77=77;
     public static final int ATTRIBUTES=4;
+    public static final int LEFT_CURLY=45;
     public static final int RESULT=32;
-    public static final int LEFT_CURLY=43;
     public static final int T69=69;
-    public static final int FROM=48;
+    public static final int FROM=50;
     public static final int ID=34;
     public static final int ACTIVATION_GROUP=23;
     public static final int LEFT_PAREN=36;
-    public static final int RIGHT_CURLY=44;
+    public static final int RIGHT_CURLY=46;
     public static final int BOOL=18;
     public static final int EXCLUDES=40;
     public static final int T73=73;
     public static final int T68=68;
+    public static final int MEMBEROF=41;
     public static final int WHEN=13;
     public static final int T78=78;
     public static final int RULEFLOW_GROUP=24;
-    public static final int WS=55;
+    public static final int WS=57;
     public static final int STRING=15;
     public static final int T66=66;
     public static final int ACTION=31;
     public static final int T71=71;
+    public static final int NOT_MEMBEROF=42;
     public static final int T72=72;
-    public static final int T65=65;
     public static final int COLLECT=33;
     public static final int T76=76;
+    public static final int T80=80;
     public static final int ACCUMULATE=29;
     public static final int NO_LOOP=21;
-    public static final int UnicodeEscape=58;
+    public static final int UnicodeEscape=60;
     public static final int T75=75;
     public static final int DURATION=26;
-    public static final int EVAL=51;
+    public static final int EVAL=53;
     public static final int MATCHES=39;
     public static final int EOF=-1;
     public static final int T67=67;
-    public static final int NULL=42;
     public static final int AGENDA_GROUP=25;
-    public static final int EOL=54;
-    public static final int Tokens=80;
+    public static final int NULL=44;
+    public static final int EOL=56;
+    public static final int Tokens=82;
     public static final int SALIENCE=19;
-    public static final int OctalEscape=59;
-    public static final int MULTI_LINE_COMMENT=62;
+    public static final int OctalEscape=61;
+    public static final int MULTI_LINE_COMMENT=64;
     public static final int RIGHT_PAREN=37;
-    public static final int NOT=50;
+    public static final int NOT=52;
     public static final int ENABLED=17;
-    public static final int RIGHT_SQUARE=46;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=61;
+    public static final int RIGHT_SQUARE=48;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=63;
     public DRLLexer() {;} 
     public DRLLexer(CharStream input) {
         super(input);
-        ruleMemo = new HashMap[78+1];
+        ruleMemo = new HashMap[80+1];
      }
-    public String getGrammarFileName() { return "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g"; }
+    public String getGrammarFileName() { return "/home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g"; }
 
-    // $ANTLR start T64
-    public final void mT64() throws RecognitionException {
-        try {
-            int _type = T64;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:6:7: ( ';' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:6:7: ';'
-            {
-            match(';'); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end T64
-
-    // $ANTLR start T65
-    public final void mT65() throws RecognitionException {
-        try {
-            int _type = T65;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:7:7: ( ':' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:7:7: ':'
-            {
-            match(':'); if (failed) return ;
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end T65
-
     // $ANTLR start T66
     public final void mT66() throws RecognitionException {
         try {
             int _type = T66;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:8:7: ( ',' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:8:7: ','
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:6:7: ( ';' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:6:7: ';'
             {
-            match(','); if (failed) return ;
+            match(';'); if (failed) return ;
 
             }
 
@@ -153,10 +119,10 @@
     public final void mT67() throws RecognitionException {
         try {
             int _type = T67;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:9:7: ( '.' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:9:7: '.'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:7:7: ( ':' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:7:7: ':'
             {
-            match('.'); if (failed) return ;
+            match(':'); if (failed) return ;
 
             }
 
@@ -171,12 +137,11 @@
     public final void mT68() throws RecognitionException {
         try {
             int _type = T68;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:10:7: ( '.*' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:10:7: '.*'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:8:7: ( ',' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:8:7: ','
             {
-            match(".*"); if (failed) return ;
+            match(','); if (failed) return ;
 
-
             }
 
             this.type = _type;
@@ -190,12 +155,11 @@
     public final void mT69() throws RecognitionException {
         try {
             int _type = T69;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:11:7: ( '||' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:11:7: '||'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:9:7: ( '.' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:9:7: '.'
             {
-            match("||"); if (failed) return ;
+            match('.'); if (failed) return ;
 
-
             }
 
             this.type = _type;
@@ -209,11 +173,12 @@
     public final void mT70() throws RecognitionException {
         try {
             int _type = T70;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:12:7: ( '&' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:12:7: '&'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:10:7: ( '.*' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:10:7: '.*'
             {
-            match('&'); if (failed) return ;
+            match(".*"); if (failed) return ;
 
+
             }
 
             this.type = _type;
@@ -227,11 +192,12 @@
     public final void mT71() throws RecognitionException {
         try {
             int _type = T71;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:13:7: ( '|' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:13:7: '|'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:11:7: ( '||' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:11:7: '||'
             {
-            match('|'); if (failed) return ;
+            match("||"); if (failed) return ;
 
+
             }
 
             this.type = _type;
@@ -245,12 +211,11 @@
     public final void mT72() throws RecognitionException {
         try {
             int _type = T72;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:14:7: ( '->' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:14:7: '->'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:12:7: ( '&' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:12:7: '&'
             {
-            match("->"); if (failed) return ;
+            match('&'); if (failed) return ;
 
-
             }
 
             this.type = _type;
@@ -264,12 +229,11 @@
     public final void mT73() throws RecognitionException {
         try {
             int _type = T73;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:15:7: ( '==' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:15:7: '=='
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:13:7: ( '|' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:13:7: '|'
             {
-            match("=="); if (failed) return ;
+            match('|'); if (failed) return ;
 
-
             }
 
             this.type = _type;
@@ -283,11 +247,12 @@
     public final void mT74() throws RecognitionException {
         try {
             int _type = T74;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:16:7: ( '>' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:16:7: '>'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:14:7: ( '->' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:14:7: '->'
             {
-            match('>'); if (failed) return ;
+            match("->"); if (failed) return ;
 
+
             }
 
             this.type = _type;
@@ -301,10 +266,10 @@
     public final void mT75() throws RecognitionException {
         try {
             int _type = T75;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:17:7: ( '>=' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:17:7: '>='
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:15:7: ( '==' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:15:7: '=='
             {
-            match(">="); if (failed) return ;
+            match("=="); if (failed) return ;
 
 
             }
@@ -320,10 +285,10 @@
     public final void mT76() throws RecognitionException {
         try {
             int _type = T76;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:18:7: ( '<' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:18:7: '<'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:16:7: ( '>' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:16:7: '>'
             {
-            match('<'); if (failed) return ;
+            match('>'); if (failed) return ;
 
             }
 
@@ -338,10 +303,10 @@
     public final void mT77() throws RecognitionException {
         try {
             int _type = T77;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:19:7: ( '<=' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:19:7: '<='
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:17:7: ( '>=' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:17:7: '>='
             {
-            match("<="); if (failed) return ;
+            match(">="); if (failed) return ;
 
 
             }
@@ -357,12 +322,11 @@
     public final void mT78() throws RecognitionException {
         try {
             int _type = T78;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:20:7: ( '!=' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:20:7: '!='
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:18:7: ( '<' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:18:7: '<'
             {
-            match("!="); if (failed) return ;
+            match('<'); if (failed) return ;
 
-
             }
 
             this.type = _type;
@@ -376,10 +340,10 @@
     public final void mT79() throws RecognitionException {
         try {
             int _type = T79;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:21:7: ( '&&' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:21:7: '&&'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:19:7: ( '<=' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:19:7: '<='
             {
-            match("&&"); if (failed) return ;
+            match("<="); if (failed) return ;
 
 
             }
@@ -391,14 +355,52 @@
     }
     // $ANTLR end T79
 
+    // $ANTLR start T80
+    public final void mT80() throws RecognitionException {
+        try {
+            int _type = T80;
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:20:7: ( '!=' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:20:7: '!='
+            {
+            match("!="); if (failed) return ;
+
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end T80
+
+    // $ANTLR start T81
+    public final void mT81() throws RecognitionException {
+        try {
+            int _type = T81;
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:21:7: ( '&&' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:21:7: '&&'
+            {
+            match("&&"); if (failed) return ;
+
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end T81
+
     // $ANTLR start WS
     public final void mWS() throws RecognitionException {
         try {
             int _type = WS;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1489:17: ( ( ' ' | '\\t' | '\\f' | EOL ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1489:17: ( ' ' | '\\t' | '\\f' | EOL )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1492:17: ( ( ' ' | '\\t' | '\\f' | EOL ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1492:17: ( ' ' | '\\t' | '\\f' | EOL )
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1489:17: ( ' ' | '\\t' | '\\f' | EOL )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1492:17: ( ' ' | '\\t' | '\\f' | EOL )
             int alt1=4;
             switch ( input.LA(1) ) {
             case ' ':
@@ -425,35 +427,35 @@
             default:
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1489:17: ( ' ' | '\\t' | '\\f' | EOL )", 1, 0, input);
+                    new NoViableAltException("1492:17: ( ' ' | '\\t' | '\\f' | EOL )", 1, 0, input);
 
                 throw nvae;
             }
 
             switch (alt1) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1489:19: ' '
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1492:19: ' '
                     {
                     match(' '); if (failed) return ;
 
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1490:19: '\\t'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1493:19: '\\t'
                     {
                     match('\t'); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1491:19: '\\f'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1494:19: '\\f'
                     {
                     match('\f'); if (failed) return ;
 
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1492:19: EOL
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1495:19: EOL
                     {
                     mEOL(); if (failed) return ;
 
@@ -478,10 +480,10 @@
     // $ANTLR start EOL
     public final void mEOL() throws RecognitionException {
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1499:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1499:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1502:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1502:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1499:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1502:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             int alt2=3;
             int LA2_0 = input.LA(1);
 
@@ -500,13 +502,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1499:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )", 2, 0, input);
+                    new NoViableAltException("1502:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )", 2, 0, input);
 
                 throw nvae;
             }
             switch (alt2) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1499:14: ( '\\r\\n' )=> '\\r\\n'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1502:14: ( '\\r\\n' )=> '\\r\\n'
                     {
                     match("\r\n"); if (failed) return ;
 
@@ -514,14 +516,14 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1500:25: '\\r'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1503:25: '\\r'
                     {
                     match('\r'); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1501:25: '\\n'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1504:25: '\\n'
                     {
                     match('\n'); if (failed) return ;
 
@@ -543,10 +545,10 @@
     public final void mINT() throws RecognitionException {
         try {
             int _type = INT;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1506:4: ( ( '-' )? ( '0' .. '9' )+ )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1506:4: ( '-' )? ( '0' .. '9' )+
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1509:4: ( ( '-' )? ( '0' .. '9' )+ )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1509:4: ( '-' )? ( '0' .. '9' )+
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1506:4: ( '-' )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1509:4: ( '-' )?
             int alt3=2;
             int LA3_0 = input.LA(1);
 
@@ -555,7 +557,7 @@
             }
             switch (alt3) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1506:5: '-'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1509:5: '-'
                     {
                     match('-'); if (failed) return ;
 
@@ -564,7 +566,7 @@
 
             }
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1506:10: ( '0' .. '9' )+
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1509:10: ( '0' .. '9' )+
             int cnt4=0;
             loop4:
             do {
@@ -578,7 +580,7 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1506:11: '0' .. '9'
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1509:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -609,10 +611,10 @@
     public final void mFLOAT() throws RecognitionException {
         try {
             int _type = FLOAT;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1510:4: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1510:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1513:4: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1513:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1510:4: ( '-' )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1513:4: ( '-' )?
             int alt5=2;
             int LA5_0 = input.LA(1);
 
@@ -621,7 +623,7 @@
             }
             switch (alt5) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1510:5: '-'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1513:5: '-'
                     {
                     match('-'); if (failed) return ;
 
@@ -630,7 +632,7 @@
 
             }
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1510:10: ( '0' .. '9' )+
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1513:10: ( '0' .. '9' )+
             int cnt6=0;
             loop6:
             do {
@@ -644,7 +646,7 @@
 
                 switch (alt6) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1510:11: '0' .. '9'
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1513:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -662,7 +664,7 @@
             } while (true);
 
             match('.'); if (failed) return ;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1510:26: ( '0' .. '9' )+
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1513:26: ( '0' .. '9' )+
             int cnt7=0;
             loop7:
             do {
@@ -676,7 +678,7 @@
 
                 switch (alt7) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1510:27: '0' .. '9'
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1513:27: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -707,7 +709,7 @@
     public final void mSTRING() throws RecognitionException {
         try {
             int _type = STRING;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1514:8: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1517:8: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -720,19 +722,19 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1513:1: STRING : ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) );", 10, 0, input);
+                    new NoViableAltException("1516:1: STRING : ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) );", 10, 0, input);
 
                 throw nvae;
             }
             switch (alt10) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1514:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1517:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1514:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1514:9: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1517:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1517:9: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
                     {
                     match('\"'); if (failed) return ;
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1514:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1517:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
                     loop8:
                     do {
                         int alt8=3;
@@ -748,14 +750,14 @@
 
                         switch (alt8) {
                     	case 1 :
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1514:15: EscapeSequence
+                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1517:15: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1514:32: ~ ( '\\\\' | '\"' )
+                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1517:32: ~ ( '\\\\' | '\"' )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
                     	        input.consume();
@@ -785,13 +787,13 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1515:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1518:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1515:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1515:9: '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\''
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1518:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1518:9: '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\''
                     {
                     match('\''); if (failed) return ;
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1515:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1518:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
                     loop9:
                     do {
                         int alt9=3;
@@ -807,14 +809,14 @@
 
                         switch (alt9) {
                     	case 1 :
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1515:16: EscapeSequence
+                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1518:16: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1515:33: ~ ( '\\\\' | '\\'' )
+                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1518:33: ~ ( '\\\\' | '\\'' )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
                     	        input.consume();
@@ -855,8 +857,8 @@
     // $ANTLR start HexDigit
     public final void mHexDigit() throws RecognitionException {
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1519:12: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1519:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1522:12: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1522: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();
@@ -881,17 +883,12 @@
     // $ANTLR start EscapeSequence
     public final void mEscapeSequence() throws RecognitionException {
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1523:9: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' ) | UnicodeEscape | OctalEscape )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1526:9: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' ) | UnicodeEscape | OctalEscape )
             int alt11=3;
             int LA11_0 = input.LA(1);
 
             if ( (LA11_0=='\\') ) {
                 switch ( input.LA(2) ) {
-                case 'u':
-                    {
-                    alt11=2;
-                    }
-                    break;
                 case '\"':
                 case '\'':
                 case '.':
@@ -905,6 +902,11 @@
                     alt11=1;
                     }
                     break;
+                case 'u':
+                    {
+                    alt11=2;
+                    }
+                    break;
                 case '0':
                 case '1':
                 case '2':
@@ -920,7 +922,7 @@
                 default:
                     if (backtracking>0) {failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1521:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' ) | UnicodeEscape | OctalEscape );", 11, 1, input);
+                        new NoViableAltException("1524:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' ) | UnicodeEscape | OctalEscape );", 11, 1, input);
 
                     throw nvae;
                 }
@@ -929,13 +931,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1521:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' ) | UnicodeEscape | OctalEscape );", 11, 0, input);
+                    new NoViableAltException("1524:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' ) | UnicodeEscape | OctalEscape );", 11, 0, input);
 
                 throw nvae;
             }
             switch (alt11) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1523:9: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1526:9: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' )
                     {
                     match('\\'); if (failed) return ;
                     if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='.'||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||input.LA(1)=='t' ) {
@@ -953,14 +955,14 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1524:9: UnicodeEscape
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1527:9: UnicodeEscape
                     {
                     mUnicodeEscape(); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1525:9: OctalEscape
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1528:9: OctalEscape
                     {
                     mOctalEscape(); if (failed) return ;
 
@@ -977,7 +979,7 @@
     // $ANTLR start OctalEscape
     public final void mOctalEscape() throws RecognitionException {
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1530:9: ( '\\\\' ( '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:1533:9: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
             int alt12=3;
             int LA12_0 = input.LA(1);
 
@@ -1011,7 +1013,7 @@
                 else {
                     if (backtracking>0) {failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1528:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 1, input);
+                        new NoViableAltException("1531:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 1, input);
 
                     throw nvae;
                 }
@@ -1019,31 +1021,31 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1528:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 0, input);
+                    new NoViableAltException("1531: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/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1530:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1533:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (failed) return ;
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1530:14: ( '0' .. '3' )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1530:15: '0' .. '3'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1533:14: ( '0' .. '3' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1533:15: '0' .. '3'
                     {
                     matchRange('0','3'); if (failed) return ;
 
                     }
 
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1530:25: ( '0' .. '7' )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1530:26: '0' .. '7'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1533:25: ( '0' .. '7' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1533:26: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
                     }
 
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1530:36: ( '0' .. '7' )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1530:37: '0' .. '7'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1533:36: ( '0' .. '7' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1533:37: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
@@ -1053,18 +1055,18 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1531:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1534:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (failed) return ;
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1531:14: ( '0' .. '7' )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1531:15: '0' .. '7'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1534:14: ( '0' .. '7' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1534:15: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
                     }
 
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1531:25: ( '0' .. '7' )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1531:26: '0' .. '7'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1534:25: ( '0' .. '7' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1534:26: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
@@ -1074,11 +1076,11 @@
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1532:9: '\\\\' ( '0' .. '7' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1535:9: '\\\\' ( '0' .. '7' )
                     {
                     match('\\'); if (failed) return ;
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1532:14: ( '0' .. '7' )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1532:15: '0' .. '7'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1535:14: ( '0' .. '7' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1535:15: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
@@ -1098,8 +1100,8 @@
     // $ANTLR start UnicodeEscape
     public final void mUnicodeEscape() throws RecognitionException {
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1537:9: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1537:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1540:9: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1540:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
             {
             match('\\'); if (failed) return ;
             match('u'); if (failed) return ;
@@ -1120,10 +1122,10 @@
     public final void mBOOL() throws RecognitionException {
         try {
             int _type = BOOL;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1541:4: ( ( 'true' | 'false' ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1541:4: ( 'true' | 'false' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1544:4: ( ( 'true' | 'false' ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1544:4: ( 'true' | 'false' )
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1541:4: ( 'true' | 'false' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1544:4: ( 'true' | 'false' )
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -1136,13 +1138,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1541:4: ( 'true' | 'false' )", 13, 0, input);
+                    new NoViableAltException("1544:4: ( 'true' | 'false' )", 13, 0, input);
 
                 throw nvae;
             }
             switch (alt13) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1541:5: 'true'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1544:5: 'true'
                     {
                     match("true"); if (failed) return ;
 
@@ -1150,7 +1152,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1541:12: 'false'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1544:12: 'false'
                     {
                     match("false"); if (failed) return ;
 
@@ -1174,8 +1176,8 @@
     public final void mPACKAGE() throws RecognitionException {
         try {
             int _type = PACKAGE;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1544:11: ( 'package' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1544:11: 'package'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1547:11: ( 'package' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1547:11: 'package'
             {
             match("package"); if (failed) return ;
 
@@ -1193,8 +1195,8 @@
     public final void mIMPORT() throws RecognitionException {
         try {
             int _type = IMPORT;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1546:10: ( 'import' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1546:10: 'import'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1549:10: ( 'import' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1549:10: 'import'
             {
             match("import"); if (failed) return ;
 
@@ -1212,8 +1214,8 @@
     public final void mFUNCTION() throws RecognitionException {
         try {
             int _type = FUNCTION;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1548:12: ( 'function' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1548:12: 'function'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1551:12: ( 'function' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1551:12: 'function'
             {
             match("function"); if (failed) return ;
 
@@ -1231,8 +1233,8 @@
     public final void mGLOBAL() throws RecognitionException {
         try {
             int _type = GLOBAL;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1550:10: ( 'global' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1550:10: 'global'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1553:10: ( 'global' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1553:10: 'global'
             {
             match("global"); if (failed) return ;
 
@@ -1250,8 +1252,8 @@
     public final void mRULE() throws RecognitionException {
         try {
             int _type = RULE;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1552:11: ( 'rule' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1552:11: 'rule'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1555:11: ( 'rule' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1555:11: 'rule'
             {
             match("rule"); if (failed) return ;
 
@@ -1269,8 +1271,8 @@
     public final void mQUERY() throws RecognitionException {
         try {
             int _type = QUERY;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1554:9: ( 'query' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1554:9: 'query'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1557:9: ( 'query' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1557:9: 'query'
             {
             match("query"); if (failed) return ;
 
@@ -1288,8 +1290,8 @@
     public final void mTEMPLATE() throws RecognitionException {
         try {
             int _type = TEMPLATE;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1556:12: ( 'template' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1556:12: 'template'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1559:12: ( 'template' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1559:12: 'template'
             {
             match("template"); if (failed) return ;
 
@@ -1307,8 +1309,8 @@
     public final void mATTRIBUTES() throws RecognitionException {
         try {
             int _type = ATTRIBUTES;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1558:14: ( 'attributes' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1558:14: 'attributes'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1561:14: ( 'attributes' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1561:14: 'attributes'
             {
             match("attributes"); if (failed) return ;
 
@@ -1326,8 +1328,8 @@
     public final void mDATE_EFFECTIVE() throws RecognitionException {
         try {
             int _type = DATE_EFFECTIVE;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1561:4: ( 'date-effective' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1561:4: 'date-effective'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1564:4: ( 'date-effective' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1564:4: 'date-effective'
             {
             match("date-effective"); if (failed) return ;
 
@@ -1345,8 +1347,8 @@
     public final void mDATE_EXPIRES() throws RecognitionException {
         try {
             int _type = DATE_EXPIRES;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1564:4: ( 'date-expires' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1564:4: 'date-expires'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1567:4: ( 'date-expires' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1567:4: 'date-expires'
             {
             match("date-expires"); if (failed) return ;
 
@@ -1364,8 +1366,8 @@
     public final void mENABLED() throws RecognitionException {
         try {
             int _type = ENABLED;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1566:11: ( 'enabled' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1566:11: 'enabled'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1569:11: ( 'enabled' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1569:11: 'enabled'
             {
             match("enabled"); if (failed) return ;
 
@@ -1383,8 +1385,8 @@
     public final void mSALIENCE() throws RecognitionException {
         try {
             int _type = SALIENCE;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1569:4: ( 'salience' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1569:4: 'salience'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1572:4: ( 'salience' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1572:4: 'salience'
             {
             match("salience"); if (failed) return ;
 
@@ -1402,8 +1404,8 @@
     public final void mNO_LOOP() throws RecognitionException {
         try {
             int _type = NO_LOOP;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1571:11: ( 'no-loop' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1571:11: 'no-loop'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1574:11: ( 'no-loop' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1574:11: 'no-loop'
             {
             match("no-loop"); if (failed) return ;
 
@@ -1421,8 +1423,8 @@
     public final void mAUTO_FOCUS() throws RecognitionException {
         try {
             int _type = AUTO_FOCUS;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1574:4: ( 'auto-focus' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1574:4: 'auto-focus'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1577:4: ( 'auto-focus' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1577:4: 'auto-focus'
             {
             match("auto-focus"); if (failed) return ;
 
@@ -1440,8 +1442,8 @@
     public final void mACTIVATION_GROUP() throws RecognitionException {
         try {
             int _type = ACTIVATION_GROUP;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1577:4: ( 'activation-group' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1577:4: 'activation-group'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1580:4: ( 'activation-group' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1580:4: 'activation-group'
             {
             match("activation-group"); if (failed) return ;
 
@@ -1459,8 +1461,8 @@
     public final void mAGENDA_GROUP() throws RecognitionException {
         try {
             int _type = AGENDA_GROUP;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1580:4: ( 'agenda-group' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1580:4: 'agenda-group'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1583:4: ( 'agenda-group' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1583:4: 'agenda-group'
             {
             match("agenda-group"); if (failed) return ;
 
@@ -1478,8 +1480,8 @@
     public final void mDIALECT() throws RecognitionException {
         try {
             int _type = DIALECT;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1583:4: ( 'dialect' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1583:4: 'dialect'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1586:4: ( 'dialect' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1586:4: 'dialect'
             {
             match("dialect"); if (failed) return ;
 
@@ -1497,8 +1499,8 @@
     public final void mRULEFLOW_GROUP() throws RecognitionException {
         try {
             int _type = RULEFLOW_GROUP;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1586:4: ( 'ruleflow-group' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1586:4: 'ruleflow-group'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1589:4: ( 'ruleflow-group' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1589:4: 'ruleflow-group'
             {
             match("ruleflow-group"); if (failed) return ;
 
@@ -1516,8 +1518,8 @@
     public final void mDURATION() throws RecognitionException {
         try {
             int _type = DURATION;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1589:4: ( 'duration' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1589:4: 'duration'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1592:4: ( 'duration' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1592:4: 'duration'
             {
             match("duration"); if (failed) return ;
 
@@ -1535,8 +1537,8 @@
     public final void mLOCK_ON_ACTIVE() throws RecognitionException {
         try {
             int _type = LOCK_ON_ACTIVE;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1592:4: ( 'lock-on-active' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1592:4: 'lock-on-active'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1595:4: ( 'lock-on-active' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1595:4: 'lock-on-active'
             {
             match("lock-on-active"); if (failed) return ;
 
@@ -1554,8 +1556,8 @@
     public final void mFROM() throws RecognitionException {
         try {
             int _type = FROM;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1594:8: ( 'from' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1594:8: 'from'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1597:8: ( 'from' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1597:8: 'from'
             {
             match("from"); if (failed) return ;
 
@@ -1573,8 +1575,8 @@
     public final void mACCUMULATE() throws RecognitionException {
         try {
             int _type = ACCUMULATE;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1597:4: ( 'accumulate' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1597:4: 'accumulate'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1600:4: ( 'accumulate' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1600:4: 'accumulate'
             {
             match("accumulate"); if (failed) return ;
 
@@ -1592,8 +1594,8 @@
     public final void mINIT() throws RecognitionException {
         try {
             int _type = INIT;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1599:8: ( 'init' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1599:8: 'init'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1602:8: ( 'init' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1602:8: 'init'
             {
             match("init"); if (failed) return ;
 
@@ -1611,8 +1613,8 @@
     public final void mACTION() throws RecognitionException {
         try {
             int _type = ACTION;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1601:10: ( 'action' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1601:10: 'action'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1604:10: ( 'action' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1604:10: 'action'
             {
             match("action"); if (failed) return ;
 
@@ -1630,8 +1632,8 @@
     public final void mRESULT() throws RecognitionException {
         try {
             int _type = RESULT;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1603:10: ( 'result' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1603:10: 'result'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1606:10: ( 'result' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1606:10: 'result'
             {
             match("result"); if (failed) return ;
 
@@ -1649,8 +1651,8 @@
     public final void mCOLLECT() throws RecognitionException {
         try {
             int _type = COLLECT;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1605:11: ( 'collect' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1605:11: 'collect'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1608:11: ( 'collect' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1608:11: 'collect'
             {
             match("collect"); if (failed) return ;
 
@@ -1668,8 +1670,8 @@
     public final void mOR() throws RecognitionException {
         try {
             int _type = OR;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1607:6: ( 'or' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1607:6: 'or'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1610:6: ( 'or' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1610:6: 'or'
             {
             match("or"); if (failed) return ;
 
@@ -1687,8 +1689,8 @@
     public final void mAND() throws RecognitionException {
         try {
             int _type = AND;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1609:7: ( 'and' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1609:7: 'and'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1612:7: ( 'and' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1612:7: 'and'
             {
             match("and"); if (failed) return ;
 
@@ -1706,8 +1708,8 @@
     public final void mCONTAINS() throws RecognitionException {
         try {
             int _type = CONTAINS;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1612:4: ( 'contains' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1612:4: 'contains'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1615:4: ( 'contains' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1615:4: 'contains'
             {
             match("contains"); if (failed) return ;
 
@@ -1725,8 +1727,8 @@
     public final void mEXCLUDES() throws RecognitionException {
         try {
             int _type = EXCLUDES;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1615:4: ( 'excludes' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1615:4: 'excludes'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1618:4: ( 'excludes' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1618:4: 'excludes'
             {
             match("excludes"); if (failed) return ;
 
@@ -1740,12 +1742,50 @@
     }
     // $ANTLR end EXCLUDES
 
+    // $ANTLR start MEMBEROF
+    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:1621:4: ( 'memberof' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1621:4: 'memberof'
+            {
+            match("memberof"); if (failed) return ;
+
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end MEMBEROF
+
+    // $ANTLR start NOT_MEMBEROF
+    public final void mNOT_MEMBEROF() throws RecognitionException {
+        try {
+            int _type = NOT_MEMBEROF;
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1624:4: ( 'nonmemberof' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1624:4: 'nonmemberof'
+            {
+            match("nonmemberof"); if (failed) return ;
+
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end NOT_MEMBEROF
+
     // $ANTLR start MATCHES
     public final void mMATCHES() throws RecognitionException {
         try {
             int _type = MATCHES;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1617:11: ( 'matches' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1617:11: 'matches'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1626:11: ( 'matches' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1626:11: 'matches'
             {
             match("matches"); if (failed) return ;
 
@@ -1763,8 +1803,8 @@
     public final void mNULL() throws RecognitionException {
         try {
             int _type = NULL;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1619:8: ( 'null' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1619:8: 'null'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1628:8: ( 'null' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1628:8: 'null'
             {
             match("null"); if (failed) return ;
 
@@ -1782,8 +1822,8 @@
     public final void mEXISTS() throws RecognitionException {
         try {
             int _type = EXISTS;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1621:10: ( 'exists' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1621:10: 'exists'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1630:10: ( 'exists' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1630:10: 'exists'
             {
             match("exists"); if (failed) return ;
 
@@ -1801,8 +1841,8 @@
     public final void mNOT() throws RecognitionException {
         try {
             int _type = NOT;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1623:7: ( 'not' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1623:7: 'not'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1632:7: ( 'not' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1632:7: 'not'
             {
             match("not"); if (failed) return ;
 
@@ -1820,8 +1860,8 @@
     public final void mEVAL() throws RecognitionException {
         try {
             int _type = EVAL;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1625:8: ( 'eval' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1625:8: 'eval'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1634:8: ( 'eval' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1634:8: 'eval'
             {
             match("eval"); if (failed) return ;
 
@@ -1839,8 +1879,8 @@
     public final void mFORALL() throws RecognitionException {
         try {
             int _type = FORALL;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1627:10: ( 'forall' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1627:10: 'forall'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1636:10: ( 'forall' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1636:10: 'forall'
             {
             match("forall"); if (failed) return ;
 
@@ -1858,8 +1898,8 @@
     public final void mWHEN() throws RecognitionException {
         try {
             int _type = WHEN;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1629:11: ( 'when' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1629:11: 'when'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1638:11: ( 'when' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1638:11: 'when'
             {
             match("when"); if (failed) return ;
 
@@ -1877,8 +1917,8 @@
     public final void mTHEN() throws RecognitionException {
         try {
             int _type = THEN;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1631:12: ( 'then' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1631:12: 'then'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1640:12: ( 'then' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1640:12: 'then'
             {
             match("then"); if (failed) return ;
 
@@ -1896,8 +1936,8 @@
     public final void mEND() throws RecognitionException {
         try {
             int _type = END;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1633:11: ( 'end' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1633:11: 'end'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1642:11: ( 'end' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1642:11: 'end'
             {
             match("end"); if (failed) return ;
 
@@ -1915,8 +1955,8 @@
     public final void mID() throws RecognitionException {
         try {
             int _type = ID;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1636:4: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1636: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:1645: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:1645: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();
@@ -1929,7 +1969,7 @@
                 recover(mse);    throw mse;
             }
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1636:50: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1645:50: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
             loop14:
             do {
                 int alt14=2;
@@ -1942,7 +1982,7 @@
 
                 switch (alt14) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:
             	    {
             	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z')||(input.LA(1)>='\u00C0' && input.LA(1)<='\u00FF') ) {
             	        input.consume();
@@ -1978,11 +2018,11 @@
     public final void mSH_STYLE_SINGLE_LINE_COMMENT() throws RecognitionException {
         try {
             int _type = SH_STYLE_SINGLE_LINE_COMMENT;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1641:4: ( '#' ( options {greedy=false; } : . )* EOL )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1641:4: '#' ( options {greedy=false; } : . )* EOL
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1650:4: ( '#' ( options {greedy=false; } : . )* EOL )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1650:4: '#' ( options {greedy=false; } : . )* EOL
             {
             match('#'); if (failed) return ;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1641:8: ( options {greedy=false; } : . )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1650:8: ( options {greedy=false; } : . )*
             loop15:
             do {
                 int alt15=2;
@@ -2001,7 +2041,7 @@
 
                 switch (alt15) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1641:35: .
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1650:35: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -2031,12 +2071,12 @@
     public final void mC_STYLE_SINGLE_LINE_COMMENT() throws RecognitionException {
         try {
             int _type = C_STYLE_SINGLE_LINE_COMMENT;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1647:4: ( '//' ( options {greedy=false; } : . )* EOL )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1647:4: '//' ( options {greedy=false; } : . )* EOL
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1656:4: ( '//' ( options {greedy=false; } : . )* EOL )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1656:4: '//' ( options {greedy=false; } : . )* EOL
             {
             match("//"); if (failed) return ;
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1647:9: ( options {greedy=false; } : . )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1656:9: ( options {greedy=false; } : . )*
             loop16:
             do {
                 int alt16=2;
@@ -2055,7 +2095,7 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1647:36: .
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1656:36: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -2085,8 +2125,8 @@
     public final void mLEFT_PAREN() throws RecognitionException {
         try {
             int _type = LEFT_PAREN;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1653:11: ( '(' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1653:11: '('
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1662:11: ( '(' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1662:11: '('
             {
             match('('); if (failed) return ;
 
@@ -2103,8 +2143,8 @@
     public final void mRIGHT_PAREN() throws RecognitionException {
         try {
             int _type = RIGHT_PAREN;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1657:11: ( ')' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1657:11: ')'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1666:11: ( ')' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1666:11: ')'
             {
             match(')'); if (failed) return ;
 
@@ -2121,8 +2161,8 @@
     public final void mLEFT_SQUARE() throws RecognitionException {
         try {
             int _type = LEFT_SQUARE;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1661:11: ( '[' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1661:11: '['
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1670:11: ( '[' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1670:11: '['
             {
             match('['); if (failed) return ;
 
@@ -2139,8 +2179,8 @@
     public final void mRIGHT_SQUARE() throws RecognitionException {
         try {
             int _type = RIGHT_SQUARE;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1665:11: ( ']' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1665:11: ']'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1674:11: ( ']' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1674:11: ']'
             {
             match(']'); if (failed) return ;
 
@@ -2157,8 +2197,8 @@
     public final void mLEFT_CURLY() throws RecognitionException {
         try {
             int _type = LEFT_CURLY;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1669:11: ( '{' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1669:11: '{'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1678:11: ( '{' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1678:11: '{'
             {
             match('{'); if (failed) return ;
 
@@ -2175,8 +2215,8 @@
     public final void mRIGHT_CURLY() throws RecognitionException {
         try {
             int _type = RIGHT_CURLY;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1673:11: ( '}' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1673:11: '}'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1682:11: ( '}' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1682:11: '}'
             {
             match('}'); if (failed) return ;
 
@@ -2193,12 +2233,12 @@
     public final void mMULTI_LINE_COMMENT() throws RecognitionException {
         try {
             int _type = MULTI_LINE_COMMENT;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1677:4: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1677:4: '/*' ( options {greedy=false; } : . )* '*/'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1686:4: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1686:4: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); if (failed) return ;
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1677:9: ( options {greedy=false; } : . )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1686:9: ( options {greedy=false; } : . )*
             loop17:
             do {
                 int alt17=2;
@@ -2223,7 +2263,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1677:35: .
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1686:35: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -2254,8 +2294,8 @@
     public final void mMISC() throws RecognitionException {
         try {
             int _type = MISC;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1682:3: ( '!' | '@' | '$' | '%' | '^' | '&' | '*' | '_' | '-' | '+' | '?' | '|' | ',' | '=' | '/' | '\\'' | '\\\\' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1691:3: ( '!' | '@' | '$' | '%' | '^' | '&' | '*' | '_' | '-' | '+' | '?' | '|' | ',' | '=' | '/' | '\\'' | '\\\\' )
+            // /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.consume();
@@ -2279,503 +2319,517 @@
     // $ANTLR end MISC
 
     public void mTokens() throws RecognitionException {
-        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:10: ( T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | T74 | T75 | T76 | T77 | T78 | T79 | 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 | RESULT | COLLECT | OR | AND | CONTAINS | EXCLUDES | MATCHES | NULL | EXISTS | NOT | EVAL | FORALL | WHEN | THEN | END | ID | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | MULTI_LINE_COMMENT | MISC )
-        int alt18=71;
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:10: ( T66 | T67 | T68 | T69 | T70 | T71 | 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 | RESULT | COLLECT | OR | AND | CONTAINS | EXCLUDES | MEMBEROF | NOT_MEMBEROF | MATCHES | NULL | EXISTS | NOT | EVAL | FORALL | WHEN | THEN | END | ID | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | MULTI_LINE_COMMENT | MISC )
+        int alt18=73;
         alt18 = dfa18.predict(input);
         switch (alt18) {
             case 1 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:10: T64
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:10: T66
                 {
-                mT64(); if (failed) return ;
+                mT66(); if (failed) return ;
 
                 }
                 break;
             case 2 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:14: T65
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:14: T67
                 {
-                mT65(); if (failed) return ;
+                mT67(); if (failed) return ;
 
                 }
                 break;
             case 3 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:18: T66
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:18: T68
                 {
-                mT66(); if (failed) return ;
+                mT68(); if (failed) return ;
 
                 }
                 break;
             case 4 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:22: T67
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:22: T69
                 {
-                mT67(); if (failed) return ;
+                mT69(); if (failed) return ;
 
                 }
                 break;
             case 5 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:26: T68
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:26: T70
                 {
-                mT68(); if (failed) return ;
+                mT70(); if (failed) return ;
 
                 }
                 break;
             case 6 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:30: T69
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:30: T71
                 {
-                mT69(); if (failed) return ;
+                mT71(); if (failed) return ;
 
                 }
                 break;
             case 7 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:34: T70
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:34: T72
                 {
-                mT70(); if (failed) return ;
+                mT72(); if (failed) return ;
 
                 }
                 break;
             case 8 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:38: T71
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:38: T73
                 {
-                mT71(); if (failed) return ;
+                mT73(); if (failed) return ;
 
                 }
                 break;
             case 9 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:42: T72
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:42: T74
                 {
-                mT72(); if (failed) return ;
+                mT74(); if (failed) return ;
 
                 }
                 break;
             case 10 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:46: T73
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:46: T75
                 {
-                mT73(); if (failed) return ;
+                mT75(); if (failed) return ;
 
                 }
                 break;
             case 11 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:50: T74
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:50: T76
                 {
-                mT74(); if (failed) return ;
+                mT76(); if (failed) return ;
 
                 }
                 break;
             case 12 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:54: T75
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:54: T77
                 {
-                mT75(); if (failed) return ;
+                mT77(); if (failed) return ;
 
                 }
                 break;
             case 13 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:58: T76
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:58: T78
                 {
-                mT76(); if (failed) return ;
+                mT78(); if (failed) return ;
 
                 }
                 break;
             case 14 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:62: T77
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:62: T79
                 {
-                mT77(); if (failed) return ;
+                mT79(); if (failed) return ;
 
                 }
                 break;
             case 15 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:66: T78
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:66: T80
                 {
-                mT78(); if (failed) return ;
+                mT80(); if (failed) return ;
 
                 }
                 break;
             case 16 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:70: T79
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:70: T81
                 {
-                mT79(); if (failed) return ;
+                mT81(); if (failed) return ;
 
                 }
                 break;
             case 17 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:74: WS
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:74: WS
                 {
                 mWS(); if (failed) return ;
 
                 }
                 break;
             case 18 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:77: INT
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:77: INT
                 {
                 mINT(); if (failed) return ;
 
                 }
                 break;
             case 19 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:81: FLOAT
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:81: FLOAT
                 {
                 mFLOAT(); if (failed) return ;
 
                 }
                 break;
             case 20 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:87: STRING
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:87: STRING
                 {
                 mSTRING(); if (failed) return ;
 
                 }
                 break;
             case 21 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:94: BOOL
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:94: BOOL
                 {
                 mBOOL(); if (failed) return ;
 
                 }
                 break;
             case 22 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:99: PACKAGE
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:99: PACKAGE
                 {
                 mPACKAGE(); if (failed) return ;
 
                 }
                 break;
             case 23 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:107: IMPORT
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:107: IMPORT
                 {
                 mIMPORT(); if (failed) return ;
 
                 }
                 break;
             case 24 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:114: FUNCTION
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:114: FUNCTION
                 {
                 mFUNCTION(); if (failed) return ;
 
                 }
                 break;
             case 25 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:123: GLOBAL
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:123: GLOBAL
                 {
                 mGLOBAL(); if (failed) return ;
 
                 }
                 break;
             case 26 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:130: RULE
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:130: RULE
                 {
                 mRULE(); if (failed) return ;
 
                 }
                 break;
             case 27 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:135: QUERY
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:135: QUERY
                 {
                 mQUERY(); if (failed) return ;
 
                 }
                 break;
             case 28 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:141: TEMPLATE
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:141: TEMPLATE
                 {
                 mTEMPLATE(); if (failed) return ;
 
                 }
                 break;
             case 29 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:150: ATTRIBUTES
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:150: ATTRIBUTES
                 {
                 mATTRIBUTES(); if (failed) return ;
 
                 }
                 break;
             case 30 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:161: DATE_EFFECTIVE
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:161: DATE_EFFECTIVE
                 {
                 mDATE_EFFECTIVE(); if (failed) return ;
 
                 }
                 break;
             case 31 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:176: DATE_EXPIRES
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:176: DATE_EXPIRES
                 {
                 mDATE_EXPIRES(); if (failed) return ;
 
                 }
                 break;
             case 32 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:189: ENABLED
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:189: ENABLED
                 {
                 mENABLED(); if (failed) return ;
 
                 }
                 break;
             case 33 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:197: SALIENCE
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:197: SALIENCE
                 {
                 mSALIENCE(); if (failed) return ;
 
                 }
                 break;
             case 34 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:206: NO_LOOP
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:206: NO_LOOP
                 {
                 mNO_LOOP(); if (failed) return ;
 
                 }
                 break;
             case 35 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:214: AUTO_FOCUS
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:214: AUTO_FOCUS
                 {
                 mAUTO_FOCUS(); if (failed) return ;
 
                 }
                 break;
             case 36 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:225: ACTIVATION_GROUP
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:225: ACTIVATION_GROUP
                 {
                 mACTIVATION_GROUP(); if (failed) return ;
 
                 }
                 break;
             case 37 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:242: AGENDA_GROUP
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:242: AGENDA_GROUP
                 {
                 mAGENDA_GROUP(); if (failed) return ;
 
                 }
                 break;
             case 38 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:255: DIALECT
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:255: DIALECT
                 {
                 mDIALECT(); if (failed) return ;
 
                 }
                 break;
             case 39 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:263: RULEFLOW_GROUP
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:263: RULEFLOW_GROUP
                 {
                 mRULEFLOW_GROUP(); if (failed) return ;
 
                 }
                 break;
             case 40 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:278: DURATION
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:278: DURATION
                 {
                 mDURATION(); if (failed) return ;
 
                 }
                 break;
             case 41 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:287: LOCK_ON_ACTIVE
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:287: LOCK_ON_ACTIVE
                 {
                 mLOCK_ON_ACTIVE(); if (failed) return ;
 
                 }
                 break;
             case 42 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:302: FROM
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:302: FROM
                 {
                 mFROM(); if (failed) return ;
 
                 }
                 break;
             case 43 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:307: ACCUMULATE
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:307: ACCUMULATE
                 {
                 mACCUMULATE(); if (failed) return ;
 
                 }
                 break;
             case 44 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:318: INIT
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:318: INIT
                 {
                 mINIT(); if (failed) return ;
 
                 }
                 break;
             case 45 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:323: ACTION
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:323: ACTION
                 {
                 mACTION(); if (failed) return ;
 
                 }
                 break;
             case 46 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:330: RESULT
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:330: RESULT
                 {
                 mRESULT(); if (failed) return ;
 
                 }
                 break;
             case 47 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:337: COLLECT
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:337: COLLECT
                 {
                 mCOLLECT(); if (failed) return ;
 
                 }
                 break;
             case 48 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:345: OR
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:345: OR
                 {
                 mOR(); if (failed) return ;
 
                 }
                 break;
             case 49 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:348: AND
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:348: AND
                 {
                 mAND(); if (failed) return ;
 
                 }
                 break;
             case 50 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:352: CONTAINS
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:352: CONTAINS
                 {
                 mCONTAINS(); if (failed) return ;
 
                 }
                 break;
             case 51 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:361: EXCLUDES
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:361: EXCLUDES
                 {
                 mEXCLUDES(); if (failed) return ;
 
                 }
                 break;
             case 52 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:370: MATCHES
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:370: MEMBEROF
                 {
-                mMATCHES(); if (failed) return ;
+                mMEMBEROF(); if (failed) return ;
 
                 }
                 break;
             case 53 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:378: NULL
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:379: NOT_MEMBEROF
                 {
-                mNULL(); if (failed) return ;
+                mNOT_MEMBEROF(); if (failed) return ;
 
                 }
                 break;
             case 54 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:383: EXISTS
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:392: MATCHES
                 {
-                mEXISTS(); if (failed) return ;
+                mMATCHES(); if (failed) return ;
 
                 }
                 break;
             case 55 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:390: NOT
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:400: NULL
                 {
-                mNOT(); if (failed) return ;
+                mNULL(); if (failed) return ;
 
                 }
                 break;
             case 56 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:394: EVAL
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:405: EXISTS
                 {
-                mEVAL(); if (failed) return ;
+                mEXISTS(); if (failed) return ;
 
                 }
                 break;
             case 57 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:399: FORALL
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:412: NOT
                 {
-                mFORALL(); if (failed) return ;
+                mNOT(); if (failed) return ;
 
                 }
                 break;
             case 58 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:406: WHEN
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:416: EVAL
                 {
-                mWHEN(); if (failed) return ;
+                mEVAL(); if (failed) return ;
 
                 }
                 break;
             case 59 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:411: THEN
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:421: FORALL
                 {
-                mTHEN(); if (failed) return ;
+                mFORALL(); if (failed) return ;
 
                 }
                 break;
             case 60 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:416: END
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:428: WHEN
                 {
-                mEND(); if (failed) return ;
+                mWHEN(); if (failed) return ;
 
                 }
                 break;
             case 61 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:420: ID
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:433: THEN
                 {
-                mID(); if (failed) return ;
+                mTHEN(); if (failed) return ;
 
                 }
                 break;
             case 62 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:423: SH_STYLE_SINGLE_LINE_COMMENT
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:438: END
                 {
-                mSH_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
+                mEND(); if (failed) return ;
 
                 }
                 break;
             case 63 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:452: C_STYLE_SINGLE_LINE_COMMENT
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:442: ID
                 {
-                mC_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
+                mID(); if (failed) return ;
 
                 }
                 break;
             case 64 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:480: LEFT_PAREN
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:445: SH_STYLE_SINGLE_LINE_COMMENT
                 {
-                mLEFT_PAREN(); if (failed) return ;
+                mSH_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
 
                 }
                 break;
             case 65 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:491: RIGHT_PAREN
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:474: C_STYLE_SINGLE_LINE_COMMENT
                 {
-                mRIGHT_PAREN(); if (failed) return ;
+                mC_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
 
                 }
                 break;
             case 66 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:503: LEFT_SQUARE
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:502: LEFT_PAREN
                 {
-                mLEFT_SQUARE(); if (failed) return ;
+                mLEFT_PAREN(); if (failed) return ;
 
                 }
                 break;
             case 67 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:515: RIGHT_SQUARE
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:513: RIGHT_PAREN
                 {
-                mRIGHT_SQUARE(); if (failed) return ;
+                mRIGHT_PAREN(); if (failed) return ;
 
                 }
                 break;
             case 68 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:528: LEFT_CURLY
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:525: LEFT_SQUARE
                 {
-                mLEFT_CURLY(); if (failed) return ;
+                mLEFT_SQUARE(); if (failed) return ;
 
                 }
                 break;
             case 69 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:539: RIGHT_CURLY
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:537: RIGHT_SQUARE
                 {
-                mRIGHT_CURLY(); if (failed) return ;
+                mRIGHT_SQUARE(); if (failed) return ;
 
                 }
                 break;
             case 70 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:551: MULTI_LINE_COMMENT
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:550: LEFT_CURLY
                 {
-                mMULTI_LINE_COMMENT(); if (failed) return ;
+                mLEFT_CURLY(); if (failed) return ;
 
                 }
                 break;
             case 71 :
-                // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:570: MISC
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:561: RIGHT_CURLY
                 {
+                mRIGHT_CURLY(); if (failed) return ;
+
+                }
+                break;
+            case 72 :
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:573: MULTI_LINE_COMMENT
+                {
+                mMULTI_LINE_COMMENT(); if (failed) return ;
+
+                }
+                break;
+            case 73 :
+                // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:592: MISC
+                {
                 mMISC(); if (failed) return ;
 
                 }
@@ -2787,8 +2841,8 @@
 
     // $ANTLR start synpred1
     public final void synpred1_fragment() throws RecognitionException {   
-        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1499:14: ( '\\r\\n' )
-        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1499:16: '\\r\\n'
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1502:14: ( '\\r\\n' )
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1502:16: '\\r\\n'
         {
         match("\r\n"); if (failed) return ;
 
@@ -2815,81 +2869,87 @@
 
     protected DFA18 dfa18 = new DFA18(this);
     static final String DFA18_eotS =
-        "\4\uffff\1\56\1\60\1\62\2\53\1\66\1\70\1\53\1\uffff\1\72\1\uffff"+
-        "\1\53\21\52\2\uffff\1\53\30\uffff\36\52\1\u0082\2\52\2\uffff\23"+
-        "\52\1\u0098\7\52\1\u00a0\1\52\1\uffff\1\u00a2\4\52\1\uffff\2\52"+
-        "\1\u00a9\1\u00aa\3\52\1\u00ae\2\52\1\u00b1\3\52\1\u00b6\6\52\1\uffff"+
-        "\3\52\1\u00c1\3\52\1\uffff\1\52\1\uffff\1\u00c6\4\52\1\u00cb\2\uffff"+
-        "\1\52\1\u00a9\1\52\1\uffff\2\52\1\uffff\4\52\1\uffff\1\u00d4\4\52"+
-        "\1\uffff\1\52\1\uffff\2\52\1\uffff\4\52\2\uffff\3\52\1\uffff\2\52"+
-        "\1\u00e6\1\52\1\u00e8\1\u00e9\1\u00ea\1\52\1\uffff\1\52\1\u00ed"+
-        "\3\52\1\uffff\2\52\1\u00f5\10\52\1\uffff\1\u00fe\3\uffff\2\52\1"+
-        "\uffff\1\52\1\uffff\1\52\2\uffff\1\u0103\1\52\1\uffff\1\52\1\u0106"+
-        "\2\52\1\u0109\1\u010a\1\u010b\1\u010c\1\uffff\4\52\1\uffff\1\u0111"+
-        "\1\u0112\1\uffff\1\u0113\1\u0114\5\uffff\3\52\4\uffff\1\u0118\1"+
-        "\52\1\u011a\3\uffff";
+        "\4\uffff\1\56\1\60\1\62\2\53\1\66\1\70\1\53\1\uffff\1\73\1\uffff"+
+        "\1\53\21\52\2\uffff\1\53\30\uffff\36\52\1\u0084\3\52\2\uffff\20"+
+        "\52\1\u0098\11\52\1\u00a2\2\52\1\uffff\1\52\1\u00a6\4\52\1\uffff"+
+        "\4\52\1\u00af\1\u00b0\1\u00b1\4\52\1\u00b6\2\52\1\u00ba\4\52\1\uffff"+
+        "\6\52\1\u00c6\2\52\1\uffff\3\52\1\uffff\1\u00cc\5\52\1\u00d2\1\52"+
+        "\3\uffff\2\52\1\u00b0\1\52\1\uffff\3\52\1\uffff\1\52\1\u00db\4\52"+
+        "\1\uffff\2\52\1\uffff\1\52\1\uffff\5\52\2\uffff\4\52\1\uffff\1\52"+
+        "\1\u00ee\2\52\1\u00f1\1\u00f2\1\52\1\u00f4\1\uffff\1\u00f5\5\52"+
+        "\1\uffff\2\52\1\u00ff\10\52\1\uffff\1\52\1\u0109\2\uffff\1\52\2"+
+        "\uffff\3\52\1\uffff\1\52\2\uffff\1\u010f\1\52\1\uffff\1\u0111\2"+
+        "\52\1\u0114\1\52\1\u0116\1\52\1\u0118\1\u0119\1\uffff\4\52\1\u011e"+
+        "\1\uffff\1\u011f\1\uffff\1\u0120\1\52\1\uffff\1\u0122\1\uffff\1"+
+        "\u0123\3\uffff\3\52\3\uffff\1\52\2\uffff\1\52\1\u0129\1\u012a\1"+
+        "\52\3\uffff\1\u012c\1\uffff";
     static final String DFA18_eofS =
-        "\u011b\uffff";
+        "\u012d\uffff";
     static final String DFA18_minS =
         "\1\11\3\uffff\1\52\1\174\1\46\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\2\uffff\1\52\30\uffff\1\165\1\145\1\155\1\154"+
-        "\1\156\1\157\1\162\1\143\1\151\1\160\1\157\1\163\1\154\1\145\1\143"+
-        "\1\145\2\164\1\144\1\164\1\141\1\162\1\141\1\143\1\141\1\154\1\55"+
-        "\1\154\1\143\1\154\1\60\1\164\1\145\2\uffff\1\145\1\156\1\160\1"+
-        "\163\1\143\1\155\1\141\1\153\1\164\1\157\1\142\1\165\1\145\1\162"+
-        "\1\165\1\151\1\156\1\157\1\162\1\60\1\145\1\154\1\141\1\154\1\163"+
-        "\1\154\1\142\1\60\1\151\1\uffff\1\60\1\154\1\153\1\164\1\154\1\uffff"+
-        "\1\143\1\156\2\60\1\154\1\145\1\164\1\60\1\154\1\141\1\60\1\162"+
-        "\1\141\1\154\1\60\1\171\1\155\1\157\1\144\1\55\1\151\1\uffff\1\55"+
-        "\1\145\1\164\1\60\1\164\1\165\1\154\1\uffff\1\145\1\uffff\1\60\1"+
-        "\55\1\141\1\145\1\150\1\60\2\uffff\1\141\1\60\1\151\1\uffff\1\154"+
-        "\1\147\1\uffff\1\164\1\154\1\164\1\154\1\uffff\1\60\1\165\1\156"+
-        "\2\141\1\uffff\1\142\1\145\1\143\1\151\1\uffff\1\163\1\144\1\145"+
-        "\1\156\2\uffff\1\151\1\143\1\145\1\uffff\1\164\1\157\1\60\1\145"+
-        "\3\60\1\157\1\uffff\1\154\1\60\1\164\1\55\1\165\1\146\1\164\1\157"+
-        "\1\60\1\145\1\144\1\143\1\156\1\164\1\163\1\145\1\156\1\uffff\1"+
-        "\60\3\uffff\1\167\1\141\1\uffff\1\151\1\uffff\1\164\2\uffff\1\60"+
-        "\1\156\1\uffff\1\163\1\60\1\145\1\163\4\60\1\uffff\1\55\1\164\1"+
-        "\157\1\145\1\uffff\2\60\1\uffff\2\60\5\uffff\1\145\1\156\1\163\4"+
-        "\uffff\1\60\1\55\1\60\3\uffff";
+        "\1\162\1\141\1\150\2\uffff\1\52\30\uffff\1\155\1\145\1\165\1\157"+
+        "\1\162\1\156\1\154\1\143\1\151\1\160\1\157\1\154\1\163\1\145\1\143"+
+        "\1\144\2\164\1\145\1\162\1\164\2\141\1\143\1\141\1\154\1\55\1\154"+
+        "\1\143\1\154\1\60\1\164\1\155\1\145\2\uffff\1\160\1\156\1\145\1"+
+        "\155\1\141\1\143\1\163\1\153\1\164\1\157\1\142\1\145\1\165\1\162"+
+        "\1\151\1\165\1\60\1\162\1\157\1\156\1\141\1\145\3\154\1\163\1\60"+
+        "\1\142\1\151\1\uffff\1\155\1\60\1\154\1\153\1\154\1\164\1\uffff"+
+        "\1\143\1\142\1\156\1\154\3\60\1\154\1\164\1\145\1\141\1\60\1\162"+
+        "\1\141\1\60\1\154\1\171\1\157\1\155\1\uffff\1\151\1\55\1\144\1\164"+
+        "\1\55\1\145\1\60\1\165\1\164\1\uffff\1\154\2\145\1\uffff\1\60\1"+
+        "\55\1\145\1\141\1\150\1\145\1\60\1\141\3\uffff\1\154\1\151\1\60"+
+        "\1\147\1\uffff\1\164\2\154\1\uffff\1\164\1\60\1\156\1\141\1\165"+
+        "\1\142\1\uffff\1\141\1\151\1\145\1\143\1\uffff\1\144\1\163\1\145"+
+        "\1\156\1\155\2\uffff\1\143\1\151\1\145\1\162\1\uffff\1\164\1\60"+
+        "\1\157\1\145\2\60\1\157\1\60\1\uffff\1\60\1\164\1\154\1\165\1\55"+
+        "\1\157\1\146\1\164\1\145\1\60\1\144\1\143\1\142\1\164\1\156\1\163"+
+        "\1\157\1\145\1\uffff\1\156\1\60\2\uffff\1\167\2\uffff\1\151\1\141"+
+        "\1\164\1\uffff\1\156\2\uffff\1\60\1\163\1\uffff\1\60\2\145\1\60"+
+        "\1\163\1\60\1\146\2\60\1\uffff\1\55\1\157\1\164\1\145\1\60\1\uffff"+
+        "\1\60\1\uffff\1\60\1\162\1\uffff\1\60\1\uffff\1\60\3\uffff\1\156"+
+        "\1\145\1\163\3\uffff\1\157\2\uffff\1\55\2\60\1\146\3\uffff\1\60"+
+        "\1\uffff";
     static final String DFA18_maxS =
         "\1\u00ff\3\uffff\1\52\1\174\1\46\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\141\1\165\2"+
-        "\157\1\162\1\141\1\150\2\uffff\1\57\30\uffff\1\165\1\145\1\155\1"+
-        "\154\1\156\1\157\1\162\1\143\1\151\1\160\1\157\1\163\1\154\1\145"+
-        "\1\164\1\145\2\164\1\144\1\164\1\141\1\162\1\141\1\151\1\144\1\154"+
-        "\1\164\1\154\1\143\1\156\1\u00ff\1\164\1\145\2\uffff\1\145\1\156"+
-        "\1\160\1\163\1\143\1\155\1\141\1\153\1\164\1\157\1\142\1\165\1\145"+
-        "\1\162\1\165\1\151\1\156\1\157\1\162\1\u00ff\1\145\1\154\1\141\1"+
-        "\154\1\163\1\154\1\142\1\u00ff\1\151\1\uffff\1\u00ff\1\154\1\153"+
-        "\1\164\1\154\1\uffff\1\143\1\156\2\u00ff\1\154\1\145\1\164\1\u00ff"+
-        "\1\154\1\141\1\u00ff\1\162\1\141\1\154\1\u00ff\1\171\1\155\1\166"+
-        "\1\144\1\55\1\151\1\uffff\1\55\1\145\1\164\1\u00ff\1\164\1\165\1"+
-        "\154\1\uffff\1\145\1\uffff\1\u00ff\1\55\1\141\1\145\1\150\1\u00ff"+
-        "\2\uffff\1\141\1\u00ff\1\151\1\uffff\1\154\1\147\1\uffff\1\164\1"+
-        "\154\1\164\1\154\1\uffff\1\u00ff\1\165\1\156\2\141\1\uffff\1\142"+
-        "\1\145\1\143\1\151\1\uffff\1\163\1\144\1\145\1\156\2\uffff\1\151"+
-        "\1\143\1\145\1\uffff\1\164\1\157\1\u00ff\1\145\3\u00ff\1\157\1\uffff"+
-        "\1\154\1\u00ff\1\164\1\55\1\165\1\170\1\164\1\157\1\u00ff\1\145"+
-        "\1\144\1\143\1\156\1\164\1\163\1\145\1\156\1\uffff\1\u00ff\3\uffff"+
-        "\1\167\1\141\1\uffff\1\151\1\uffff\1\164\2\uffff\1\u00ff\1\156\1"+
-        "\uffff\1\163\1\u00ff\1\145\1\163\4\u00ff\1\uffff\1\55\1\164\1\157"+
-        "\1\145\1\uffff\2\u00ff\1\uffff\2\u00ff\5\uffff\1\145\1\156\1\163"+
-        "\4\uffff\1\u00ff\1\55\1\u00ff\3\uffff";
+        "\157\1\162\1\145\1\150\2\uffff\1\57\30\uffff\1\155\1\145\1\165\1"+
+        "\157\1\162\1\156\1\154\1\143\1\151\1\160\1\157\1\154\1\163\1\145"+
+        "\1\164\1\144\2\164\1\145\1\162\1\164\2\141\1\151\1\144\1\154\1\164"+
+        "\1\154\1\143\1\156\1\u00ff\1\164\1\155\1\145\2\uffff\1\160\1\156"+
+        "\1\145\1\155\1\141\1\143\1\163\1\153\1\164\1\157\1\142\1\145\1\165"+
+        "\1\162\1\151\1\165\1\u00ff\1\162\1\157\1\156\1\141\1\145\3\154\1"+
+        "\163\1\u00ff\1\142\1\151\1\uffff\1\155\1\u00ff\1\154\1\153\1\154"+
+        "\1\164\1\uffff\1\143\1\142\1\156\1\154\3\u00ff\1\154\1\164\1\145"+
+        "\1\141\1\u00ff\1\162\1\141\1\u00ff\1\154\1\171\1\166\1\155\1\uffff"+
+        "\1\151\1\55\1\144\1\164\1\55\1\145\1\u00ff\1\165\1\164\1\uffff\1"+
+        "\154\2\145\1\uffff\1\u00ff\1\55\1\145\1\141\1\150\1\145\1\u00ff"+
+        "\1\141\3\uffff\1\154\1\151\1\u00ff\1\147\1\uffff\1\164\2\154\1\uffff"+
+        "\1\164\1\u00ff\1\156\1\141\1\165\1\142\1\uffff\1\141\1\151\1\145"+
+        "\1\143\1\uffff\1\144\1\163\1\145\1\156\1\155\2\uffff\1\143\1\151"+
+        "\1\145\1\162\1\uffff\1\164\1\u00ff\1\157\1\145\2\u00ff\1\157\1\u00ff"+
+        "\1\uffff\1\u00ff\1\164\1\154\1\165\1\55\1\157\1\170\1\164\1\145"+
+        "\1\u00ff\1\144\1\143\1\142\1\164\1\156\1\163\1\157\1\145\1\uffff"+
+        "\1\156\1\u00ff\2\uffff\1\167\2\uffff\1\151\1\141\1\164\1\uffff\1"+
+        "\156\2\uffff\1\u00ff\1\163\1\uffff\1\u00ff\2\145\1\u00ff\1\163\1"+
+        "\u00ff\1\146\2\u00ff\1\uffff\1\55\1\157\1\164\1\145\1\u00ff\1\uffff"+
+        "\1\u00ff\1\uffff\1\u00ff\1\162\1\uffff\1\u00ff\1\uffff\1\u00ff\3"+
+        "\uffff\1\156\1\145\1\163\3\uffff\1\157\2\uffff\1\55\2\u00ff\1\146"+
+        "\3\uffff\1\u00ff\1\uffff";
     static final String DFA18_acceptS =
-        "\1\uffff\1\1\1\2\1\3\10\uffff\1\21\1\uffff\1\24\22\uffff\1\75\1"+
-        "\76\1\uffff\1\100\1\101\1\102\1\103\1\104\1\105\1\75\1\107\1\3\1"+
-        "\5\1\4\1\6\1\10\1\20\1\7\1\11\1\12\1\14\1\13\1\16\1\15\1\17\1\22"+
-        "\1\23\41\uffff\1\106\1\77\35\uffff\1\42\5\uffff\1\60\25\uffff\1"+
-        "\61\7\uffff\1\74\1\uffff\1\67\6\uffff\1\25\1\73\3\uffff\1\52\2\uffff"+
-        "\1\54\4\uffff\1\32\5\uffff\1\43\4\uffff\1\70\4\uffff\1\65\1\51\3"+
-        "\uffff\1\72\10\uffff\1\33\21\uffff\1\71\1\uffff\1\27\1\31\1\56\2"+
-        "\uffff\1\55\1\uffff\1\45\1\uffff\1\36\1\37\2\uffff\1\66\10\uffff"+
-        "\1\26\4\uffff\1\46\2\uffff\1\40\2\uffff\1\57\1\64\1\34\1\30\1\47"+
-        "\3\uffff\1\50\1\63\1\41\1\62\3\uffff\1\53\1\44\1\35";
+        "\1\uffff\1\1\1\2\1\3\10\uffff\1\21\1\uffff\1\24\22\uffff\1\77\1"+
+        "\100\1\uffff\1\102\1\103\1\104\1\105\1\106\1\107\1\77\1\111\1\3"+
+        "\1\5\1\4\1\6\1\10\1\20\1\7\1\11\1\12\1\14\1\13\1\16\1\15\1\17\1"+
+        "\23\1\22\42\uffff\1\101\1\110\35\uffff\1\42\6\uffff\1\60\23\uffff"+
+        "\1\61\11\uffff\1\76\3\uffff\1\71\10\uffff\1\75\1\25\1\52\4\uffff"+
+        "\1\54\3\uffff\1\32\6\uffff\1\43\4\uffff\1\72\5\uffff\1\67\1\51\4"+
+        "\uffff\1\74\10\uffff\1\33\22\uffff\1\73\2\uffff\1\27\1\31\1\uffff"+
+        "\1\56\1\55\3\uffff\1\45\1\uffff\1\36\1\37\2\uffff\1\70\11\uffff"+
+        "\1\26\5\uffff\1\46\1\uffff\1\40\2\uffff\1\57\1\uffff\1\66\1\uffff"+
+        "\1\34\1\30\1\47\3\uffff\1\50\1\63\1\41\1\uffff\1\62\1\64\4\uffff"+
+        "\1\44\1\53\1\35\1\uffff\1\65";
     static final String DFA18_specialS =
-        "\u011b\uffff}>";
+        "\u012d\uffff}>";
     static final String[] DFA18_transitionS = {
             "\2\14\1\uffff\2\14\22\uffff\1\14\1\13\1\16\1\42\1\41\1\53\1"+
             "\6\1\17\1\44\1\45\2\53\1\3\1\7\1\4\1\43\12\15\1\2\1\1\1\12\1"+
@@ -2909,29 +2969,29 @@
             "\1\67",
             "\1\71",
             "",
-            "\1\73\1\uffff\12\15",
+            "\1\72\1\uffff\12\15",
             "",
             "\uffff\16",
-            "\1\76\2\uffff\1\75\11\uffff\1\74",
-            "\1\77\15\uffff\1\102\2\uffff\1\101\2\uffff\1\100",
+            "\1\74\2\uffff\1\75\11\uffff\1\76",
+            "\1\102\15\uffff\1\100\2\uffff\1\77\2\uffff\1\101",
             "\1\103",
             "\1\105\1\104",
             "\1\106",
-            "\1\107\17\uffff\1\110",
+            "\1\110\17\uffff\1\107",
             "\1\111",
-            "\1\112\3\uffff\1\113\6\uffff\1\116\5\uffff\1\115\1\114",
-            "\1\117\7\uffff\1\120\13\uffff\1\121",
+            "\1\112\3\uffff\1\116\6\uffff\1\113\5\uffff\1\114\1\115",
+            "\1\120\7\uffff\1\121\13\uffff\1\117",
             "\1\124\7\uffff\1\122\1\uffff\1\123",
             "\1\125",
             "\1\126\5\uffff\1\127",
             "\1\130",
             "\1\131",
             "\1\132",
-            "\1\133",
-            "\1\134",
+            "\1\133\3\uffff\1\134",
+            "\1\135",
             "",
             "",
-            "\1\135\4\uffff\1\136",
+            "\1\137\4\uffff\1\136",
             "",
             "",
             "",
@@ -2956,7 +3016,6 @@
             "",
             "",
             "",
-            "\1\137",
             "\1\140",
             "\1\141",
             "\1\142",
@@ -2970,8 +3029,8 @@
             "\1\152",
             "\1\153",
             "\1\154",
-            "\1\155\20\uffff\1\156",
-            "\1\157",
+            "\1\155",
+            "\1\157\20\uffff\1\156",
             "\1\160",
             "\1\161",
             "\1\162",
@@ -2979,22 +3038,21 @@
             "\1\164",
             "\1\165",
             "\1\166",
-            "\1\170\5\uffff\1\167",
-            "\1\171\2\uffff\1\172",
-            "\1\173",
-            "\1\174\106\uffff\1\175",
-            "\1\176",
-            "\1\177",
-            "\1\u0081\1\uffff\1\u0080",
+            "\1\167",
+            "\1\170\5\uffff\1\171",
+            "\1\173\2\uffff\1\172",
+            "\1\174",
+            "\1\175\100\uffff\1\176\5\uffff\1\177",
+            "\1\u0080",
+            "\1\u0081",
+            "\1\u0082\1\uffff\1\u0083",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u0083",
-            "\1\u0084",
-            "",
-            "",
             "\1\u0085",
             "\1\u0086",
             "\1\u0087",
+            "",
+            "",
             "\1\u0088",
             "\1\u0089",
             "\1\u008a",
@@ -3020,197 +3078,219 @@
             "\1\u009d",
             "\1\u009e",
             "\1\u009f",
-            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
-            "\52",
+            "\1\u00a0",
             "\1\u00a1",
-            "",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
             "\1\u00a3",
             "\1\u00a4",
+            "",
             "\1\u00a5",
-            "\1\u00a6",
-            "",
+            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
+            "\52",
             "\1\u00a7",
             "\1\u00a8",
-            "\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\u00a9",
+            "\1\u00aa",
+            "",
             "\1\u00ab",
             "\1\u00ac",
             "\1\u00ad",
+            "\1\u00ae",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\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\u00b2",
             "\1\u00b3",
             "\1\u00b4",
-            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\5\52\1\u00b5\24\52"+
-            "\105\uffff\100\52",
+            "\1\u00b5",
+            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
+            "\52",
             "\1\u00b7",
             "\1\u00b8",
-            "\1\u00b9\6\uffff\1\u00ba",
+            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\5\52\1\u00b9\24\52"+
+            "\105\uffff\100\52",
             "\1\u00bb",
             "\1\u00bc",
-            "\1\u00bd",
+            "\1\u00bd\6\uffff\1\u00be",
+            "\1\u00bf",
             "",
-            "\1\u00be",
-            "\1\u00bf",
             "\1\u00c0",
-            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
-            "\52",
+            "\1\u00c1",
             "\1\u00c2",
             "\1\u00c3",
             "\1\u00c4",
-            "",
             "\1\u00c5",
-            "",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
             "\1\u00c7",
             "\1\u00c8",
+            "",
             "\1\u00c9",
             "\1\u00ca",
-            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
-            "\52",
+            "\1\u00cb",
             "",
-            "",
-            "\1\u00cc",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
             "\1\u00cd",
-            "",
             "\1\u00ce",
             "\1\u00cf",
-            "",
             "\1\u00d0",
             "\1\u00d1",
-            "\1\u00d2",
+            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
+            "\52",
             "\1\u00d3",
             "",
+            "",
+            "",
+            "\1\u00d4",
+            "\1\u00d5",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u00d5",
             "\1\u00d6",
+            "",
             "\1\u00d7",
             "\1\u00d8",
+            "\1\u00d9",
             "",
-            "\1\u00d9",
             "\1\u00da",
-            "\1\u00db",
+            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
+            "\52",
             "\1\u00dc",
-            "",
             "\1\u00dd",
             "\1\u00de",
             "\1\u00df",
+            "",
             "\1\u00e0",
-            "",
-            "",
             "\1\u00e1",
             "\1\u00e2",
             "\1\u00e3",
             "",
             "\1\u00e4",
             "\1\u00e5",
+            "\1\u00e6",
+            "\1\u00e7",
+            "\1\u00e8",
+            "",
+            "",
+            "\1\u00e9",
+            "\1\u00ea",
+            "\1\u00eb",
+            "\1\u00ec",
+            "",
+            "\1\u00ed",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u00e7",
+            "\1\u00ef",
+            "\1\u00f0",
             "\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\u00f3",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u00eb",
             "",
-            "\1\u00ec",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u00ee",
-            "\1\u00ef",
-            "\1\u00f0",
-            "\1\u00f1\21\uffff\1\u00f2",
-            "\1\u00f3",
-            "\1\u00f4",
-            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
-            "\52",
             "\1\u00f6",
             "\1\u00f7",
             "\1\u00f8",
             "\1\u00f9",
             "\1\u00fa",
-            "\1\u00fb",
-            "\1\u00fc",
+            "\1\u00fb\21\uffff\1\u00fc",
             "\1\u00fd",
+            "\1\u00fe",
+            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
+            "\52",
+            "\1\u0100",
+            "\1\u0101",
+            "\1\u0102",
+            "\1\u0103",
+            "\1\u0104",
+            "\1\u0105",
+            "\1\u0106",
+            "\1\u0107",
             "",
+            "\1\u0108",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
             "",
             "",
+            "\1\u010a",
             "",
-            "\1\u00ff",
-            "\1\u0100",
             "",
-            "\1\u0101",
+            "\1\u010b",
+            "\1\u010c",
+            "\1\u010d",
             "",
-            "\1\u0102",
+            "\1\u010e",
             "",
             "",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u0104",
+            "\1\u0110",
             "",
-            "\1\u0105",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u0107",
-            "\1\u0108",
+            "\1\u0112",
+            "\1\u0113",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
+            "\1\u0115",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
+            "\1\u0117",
             "\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\u010d",
-            "\1\u010e",
-            "\1\u010f",
-            "\1\u0110",
+            "\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",
             "",
             "\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\u0121",
             "",
             "\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\u0115",
-            "\1\u0116",
-            "\1\u0117",
             "",
+            "\1\u0127",
             "",
             "",
-            "",
+            "\1\u0128",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
-            "\1\u0119",
             "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
             "\52",
+            "\1\u012b",
             "",
             "",
+            "",
+            "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100"+
+            "\52",
             ""
     };
 
@@ -3244,7 +3324,7 @@
             this.transition = DFA18_transition;
         }
         public String getDescription() {
-            return "1:1: Tokens : ( T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | T74 | T75 | T76 | T77 | T78 | T79 | 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 | RESULT | COLLECT | OR | AND | CONTAINS | EXCLUDES | MATCHES | NULL | EXISTS | NOT | EVAL | FORALL | WHEN | THEN | END | ID | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | MULTI_LINE_COMMENT | MISC );";
+            return "1:1: Tokens : ( T66 | T67 | T68 | T69 | T70 | T71 | 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 | RESULT | COLLECT | OR | AND | CONTAINS | EXCLUDES | MEMBEROF | NOT_MEMBEROF | MATCHES | NULL | EXISTS | NOT | EVAL | FORALL | WHEN | THEN | END | ID | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | MULTI_LINE_COMMENT | MISC );";
         }
     }
  

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0b7 /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2007-04-27 11:20:35
+// $ANTLR 3.0b7 /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2007-04-30 13:54:16
 
 	package org.drools.lang;
 	import java.util.List;
@@ -18,78 +18,80 @@
 import java.util.HashMap;
 public class DRLParser extends Parser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "ATTRIBUTES", "PACKAGE", "IMPORT", "FUNCTION", "GLOBAL", "QUERY", "END", "TEMPLATE", "RULE", "WHEN", "DATE_EFFECTIVE", "STRING", "DATE_EXPIRES", "ENABLED", "BOOL", "SALIENCE", "INT", "NO_LOOP", "AUTO_FOCUS", "ACTIVATION_GROUP", "RULEFLOW_GROUP", "AGENDA_GROUP", "DURATION", "DIALECT", "LOCK_ON_ACTIVE", "ACCUMULATE", "INIT", "ACTION", "RESULT", "COLLECT", "ID", "OR", "LEFT_PAREN", "RIGHT_PAREN", "CONTAINS", "MATCHES", "EXCLUDES", "FLOAT", "NULL", "LEFT_CURLY", "RIGHT_CURLY", "LEFT_SQUARE", "RIGHT_SQUARE", "AND", "FROM", "EXISTS", "NOT", "EVAL", "FORALL", "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>", "ATTRIBUTES", "PACKAGE", "IMPORT", "FUNCTION", "GLOBAL", "QUERY", "END", "TEMPLATE", "RULE", "WHEN", "DATE_EFFECTIVE", "STRING", "DATE_EXPIRES", "ENABLED", "BOOL", "SALIENCE", "INT", "NO_LOOP", "AUTO_FOCUS", "ACTIVATION_GROUP", "RULEFLOW_GROUP", "AGENDA_GROUP", "DURATION", "DIALECT", "LOCK_ON_ACTIVE", "ACCUMULATE", "INIT", "ACTION", "RESULT", "COLLECT", "ID", "OR", "LEFT_PAREN", "RIGHT_PAREN", "CONTAINS", "MATCHES", "EXCLUDES", "MEMBEROF", "NOT_MEMBEROF", "FLOAT", "NULL", "LEFT_CURLY", "RIGHT_CURLY", "LEFT_SQUARE", "RIGHT_SQUARE", "AND", "FROM", "EXISTS", "NOT", "EVAL", "FORALL", "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 EXISTS=49;
+    public static final int EXISTS=51;
     public static final int AUTO_FOCUS=22;
     public static final int END=10;
-    public static final int HexDigit=57;
-    public static final int FORALL=52;
+    public static final int HexDigit=59;
+    public static final int FORALL=54;
     public static final int TEMPLATE=11;
-    public static final int MISC=63;
-    public static final int FLOAT=41;
+    public static final int MISC=65;
+    public static final int FLOAT=43;
     public static final int QUERY=9;
-    public static final int THEN=53;
+    public static final int THEN=55;
     public static final int RULE=12;
     public static final int INIT=30;
     public static final int IMPORT=6;
     public static final int DATE_EFFECTIVE=14;
     public static final int PACKAGE=5;
     public static final int OR=35;
-    public static final int AND=47;
+    public static final int AND=49;
     public static final int FUNCTION=7;
     public static final int GLOBAL=8;
-    public static final int EscapeSequence=56;
+    public static final int EscapeSequence=58;
     public static final int DIALECT=27;
     public static final int INT=20;
     public static final int LOCK_ON_ACTIVE=28;
     public static final int DATE_EXPIRES=16;
-    public static final int LEFT_SQUARE=45;
+    public static final int LEFT_SQUARE=47;
     public static final int CONTAINS=38;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=60;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=62;
     public static final int ATTRIBUTES=4;
+    public static final int LEFT_CURLY=45;
     public static final int RESULT=32;
-    public static final int LEFT_CURLY=43;
-    public static final int FROM=48;
+    public static final int FROM=50;
     public static final int ID=34;
     public static final int ACTIVATION_GROUP=23;
     public static final int LEFT_PAREN=36;
-    public static final int RIGHT_CURLY=44;
+    public static final int RIGHT_CURLY=46;
     public static final int BOOL=18;
     public static final int EXCLUDES=40;
+    public static final int MEMBEROF=41;
     public static final int WHEN=13;
     public static final int RULEFLOW_GROUP=24;
-    public static final int WS=55;
+    public static final int WS=57;
     public static final int STRING=15;
     public static final int ACTION=31;
+    public static final int NOT_MEMBEROF=42;
     public static final int COLLECT=33;
     public static final int NO_LOOP=21;
     public static final int ACCUMULATE=29;
-    public static final int UnicodeEscape=58;
+    public static final int UnicodeEscape=60;
     public static final int DURATION=26;
-    public static final int EVAL=51;
+    public static final int EVAL=53;
     public static final int MATCHES=39;
     public static final int EOF=-1;
-    public static final int EOL=54;
+    public static final int EOL=56;
+    public static final int NULL=44;
     public static final int AGENDA_GROUP=25;
-    public static final int NULL=42;
-    public static final int OctalEscape=59;
+    public static final int OctalEscape=61;
     public static final int SALIENCE=19;
-    public static final int MULTI_LINE_COMMENT=62;
-    public static final int NOT=50;
+    public static final int MULTI_LINE_COMMENT=64;
+    public static final int NOT=52;
     public static final int RIGHT_PAREN=37;
     public static final int ENABLED=17;
-    public static final int RIGHT_SQUARE=46;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=61;
+    public static final int RIGHT_SQUARE=48;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=63;
 
         public DRLParser(TokenStream input) {
             super(input);
-            ruleMemo = new HashMap[197+1];
+            ruleMemo = new HashMap[200+1];
          }
         
 
     public String[] getTokenNames() { return tokenNames; }
-    public String getGrammarFileName() { return "/home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g"; }
+    public String getGrammarFileName() { return "/home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g"; }
 
 
     	private PackageDescr packageDescr;
@@ -242,24 +244,24 @@
 
 
     // $ANTLR start opt_semicolon
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:168:1: opt_semicolon : ( ';' )? ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:168:1: opt_semicolon : ( ';' )? ;
     public final void opt_semicolon() throws RecognitionException {
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:169:4: ( ( ';' )? )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:169:4: ( ';' )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:169:4: ( ( ';' )? )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:169:4: ( ';' )?
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:169:4: ( ';' )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:169:4: ( ';' )?
             int alt1=2;
             int LA1_0 = input.LA(1);
 
-            if ( (LA1_0==64) ) {
+            if ( (LA1_0==66) ) {
                 alt1=1;
             }
             switch (alt1) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:0:0: ';'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:0:0: ';'
                     {
-                    match(input,64,FOLLOW_64_in_opt_semicolon46); if (failed) return ;
+                    match(input,66,FOLLOW_66_in_opt_semicolon46); if (failed) return ;
 
                     }
                     break;
@@ -282,17 +284,17 @@
 
 
     // $ANTLR start compilation_unit
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:172:1: compilation_unit : prolog ( statement )+ ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:172:1: compilation_unit : prolog ( statement )+ ;
     public final void compilation_unit() throws RecognitionException {
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:173:4: ( prolog ( statement )+ )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:173:4: prolog ( statement )+
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:173:4: ( prolog ( statement )+ )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:173:4: prolog ( statement )+
             {
             pushFollow(FOLLOW_prolog_in_compilation_unit58);
             prolog();
             _fsp--;
             if (failed) return ;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:174:3: ( statement )+
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:174:3: ( statement )+
             int cnt2=0;
             loop2:
             do {
@@ -306,7 +308,7 @@
 
                 switch (alt2) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:174:5: statement
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:174:5: statement
             	    {
             	    pushFollow(FOLLOW_statement_in_compilation_unit65);
             	    statement();
@@ -342,7 +344,7 @@
 
 
     // $ANTLR start prolog
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:177:1: prolog : (n= package_statement )? ( ATTRIBUTES ':' )? ( ( ',' )? a= rule_attribute )* ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:177:1: prolog : (n= package_statement )? ( ATTRIBUTES ':' )? ( ( ',' )? a= rule_attribute )* ;
     public final void prolog() throws RecognitionException {
         String n = null;
 
@@ -353,10 +355,10 @@
         		String packageName = "";
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:181:4: ( (n= package_statement )? ( ATTRIBUTES ':' )? ( ( ',' )? a= rule_attribute )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:181:4: (n= package_statement )? ( ATTRIBUTES ':' )? ( ( ',' )? a= rule_attribute )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:181:4: ( (n= package_statement )? ( ATTRIBUTES ':' )? ( ( ',' )? a= rule_attribute )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:181:4: (n= package_statement )? ( ATTRIBUTES ':' )? ( ( ',' )? a= rule_attribute )*
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:181:4: (n= package_statement )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:181:4: (n= package_statement )?
             int alt3=2;
             int LA3_0 = input.LA(1);
 
@@ -365,7 +367,7 @@
             }
             switch (alt3) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:181:6: n= package_statement
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:181:6: n= package_statement
                     {
                     pushFollow(FOLLOW_package_statement_in_prolog90);
                     n=package_statement();
@@ -385,7 +387,7 @@
               			this.packageDescr = factory.createPackage( packageName ); 
               		
             }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:185:4: ( ATTRIBUTES ':' )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:185:4: ( ATTRIBUTES ':' )?
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -394,43 +396,43 @@
             }
             switch (alt4) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:185:5: ATTRIBUTES ':'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:185:5: ATTRIBUTES ':'
                     {
                     match(input,ATTRIBUTES,FOLLOW_ATTRIBUTES_in_prolog105); if (failed) return ;
-                    match(input,65,FOLLOW_65_in_prolog107); if (failed) return ;
+                    match(input,67,FOLLOW_67_in_prolog107); if (failed) return ;
 
                     }
                     break;
 
             }
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:186:4: ( ( ',' )? a= rule_attribute )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:186:4: ( ( ',' )? a= rule_attribute )*
             loop6:
             do {
                 int alt6=2;
                 int LA6_0 = input.LA(1);
 
-                if ( (LA6_0==DATE_EFFECTIVE||(LA6_0>=DATE_EXPIRES && LA6_0<=ENABLED)||LA6_0==SALIENCE||(LA6_0>=NO_LOOP && LA6_0<=LOCK_ON_ACTIVE)||LA6_0==66) ) {
+                if ( (LA6_0==DATE_EFFECTIVE||(LA6_0>=DATE_EXPIRES && LA6_0<=ENABLED)||LA6_0==SALIENCE||(LA6_0>=NO_LOOP && LA6_0<=LOCK_ON_ACTIVE)||LA6_0==68) ) {
                     alt6=1;
                 }
 
 
                 switch (alt6) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:186:6: ( ',' )? a= rule_attribute
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:186:6: ( ',' )? a= rule_attribute
             	    {
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:186:6: ( ',' )?
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:186:6: ( ',' )?
             	    int alt5=2;
             	    int LA5_0 = input.LA(1);
 
-            	    if ( (LA5_0==66) ) {
+            	    if ( (LA5_0==68) ) {
             	        alt5=1;
             	    }
             	    switch (alt5) {
             	        case 1 :
-            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:0:0: ','
+            	            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:0:0: ','
             	            {
-            	            match(input,66,FOLLOW_66_in_prolog116); if (failed) return ;
+            	            match(input,68,FOLLOW_68_in_prolog116); if (failed) return ;
 
             	            }
             	            break;
@@ -471,7 +473,7 @@
 
 
     // $ANTLR start statement
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:193:1: statement : ( 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:193:1: statement : ( function_import_statement | import_statement | global | function | t= template | r= rule | q= query ) ;
     public final void statement() throws RecognitionException {
         FactTemplateDescr t = null;
 
@@ -481,10 +483,10 @@
 
 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:195:2: ( ( function_import_statement | import_statement | global | function | t= template | r= rule | q= query ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:195:2: ( 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:195:2: ( ( 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:195:2: ( function_import_statement | import_statement | global | function | t= template | r= rule | q= query )
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:195:2: ( 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:195:2: ( function_import_statement | import_statement | global | function | t= template | r= rule | q= query )
             int alt7=7;
             switch ( input.LA(1) ) {
             case IMPORT:
@@ -541,7 +543,7 @@
 
             switch (alt7) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:195:4: function_import_statement
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:195:4: function_import_statement
                     {
                     pushFollow(FOLLOW_function_import_statement_in_statement150);
                     function_import_statement();
@@ -551,7 +553,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:196:4: import_statement
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:196:4: import_statement
                     {
                     pushFollow(FOLLOW_import_statement_in_statement156);
                     import_statement();
@@ -561,7 +563,7 @@
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:197:4: global
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:197:4: global
                     {
                     pushFollow(FOLLOW_global_in_statement162);
                     global();
@@ -571,7 +573,7 @@
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:198:4: function
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:198:4: function
                     {
                     pushFollow(FOLLOW_function_in_statement168);
                     function();
@@ -581,7 +583,7 @@
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:199:10: t= template
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:199:10: t= template
                     {
                     pushFollow(FOLLOW_template_in_statement182);
                     t=template();
@@ -594,7 +596,7 @@
                     }
                     break;
                 case 6 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:200:4: r= rule
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:200:4: r= rule
                     {
                     pushFollow(FOLLOW_rule_in_statement191);
                     r=rule();
@@ -607,7 +609,7 @@
                     }
                     break;
                 case 7 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:201:4: q= query
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:201:4: q= query
                     {
                     pushFollow(FOLLOW_query_in_statement203);
                     q=query();
@@ -638,7 +640,7 @@
 
 
     // $ANTLR start package_statement
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:205:1: package_statement returns [String packageName] : PACKAGE n= dotted_name[null] opt_semicolon ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:205:1: package_statement returns [String packageName] : PACKAGE n= dotted_name[null] opt_semicolon ;
     public final String package_statement() throws RecognitionException {
         String packageName = null;
 
@@ -649,8 +651,8 @@
         		packageName = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:210:3: ( PACKAGE n= dotted_name[null] opt_semicolon )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:210:3: PACKAGE n= dotted_name[null] opt_semicolon
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:210:3: ( PACKAGE n= dotted_name[null] opt_semicolon )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:210:3: PACKAGE n= dotted_name[null] opt_semicolon
             {
             match(input,PACKAGE,FOLLOW_PACKAGE_in_package_statement232); if (failed) return packageName;
             pushFollow(FOLLOW_dotted_name_in_package_statement236);
@@ -682,7 +684,7 @@
 
 
     // $ANTLR start import_statement
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:217:1: import_statement : imp= IMPORT import_name[importDecl] opt_semicolon ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:217:1: import_statement : imp= IMPORT import_name[importDecl] opt_semicolon ;
     public final void import_statement() throws RecognitionException {
         Token imp=null;
 
@@ -690,8 +692,8 @@
                 	ImportDescr importDecl = null;
                 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:221:4: (imp= IMPORT import_name[importDecl] opt_semicolon )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:221:4: imp= IMPORT import_name[importDecl] opt_semicolon
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:221:4: (imp= IMPORT import_name[importDecl] opt_semicolon )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:221:4: imp= IMPORT import_name[importDecl] opt_semicolon
             {
             imp=(Token)input.LT(1);
             match(input,IMPORT,FOLLOW_IMPORT_in_import_statement271); if (failed) return ;
@@ -728,7 +730,7 @@
 
 
     // $ANTLR start function_import_statement
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:232:1: function_import_statement : imp= IMPORT FUNCTION import_name[importDecl] opt_semicolon ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:232:1: function_import_statement : imp= IMPORT FUNCTION import_name[importDecl] opt_semicolon ;
     public final void function_import_statement() throws RecognitionException {
         Token imp=null;
 
@@ -736,8 +738,8 @@
                 	FunctionImportDescr importDecl = null;
                 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:236:4: (imp= IMPORT FUNCTION import_name[importDecl] opt_semicolon )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:236:4: imp= IMPORT FUNCTION import_name[importDecl] opt_semicolon
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:236:4: (imp= IMPORT FUNCTION import_name[importDecl] opt_semicolon )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:236:4: imp= IMPORT FUNCTION import_name[importDecl] opt_semicolon
             {
             imp=(Token)input.LT(1);
             match(input,IMPORT,FOLLOW_IMPORT_in_function_import_statement323); if (failed) return ;
@@ -775,7 +777,7 @@
 
 
     // $ANTLR start import_name
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:248:1: import_name[ImportDescr importDecl] returns [String name] : id= identifier ( '.' id= identifier )* (star= '.*' )? ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:248:1: import_name[ImportDescr importDecl] returns [String name] : id= identifier ( '.' id= identifier )* (star= '.*' )? ;
     public final String import_name(ImportDescr importDecl) throws RecognitionException {
         String name = null;
 
@@ -787,8 +789,8 @@
         		name = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:253:3: (id= identifier ( '.' id= identifier )* (star= '.*' )? )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:253:3: id= identifier ( '.' id= identifier )* (star= '.*' )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:253:3: (id= identifier ( '.' id= identifier )* (star= '.*' )? )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:253:3: id= identifier ( '.' id= identifier )* (star= '.*' )?
             {
             pushFollow(FOLLOW_identifier_in_import_name379);
             id=identifier();
@@ -801,22 +803,22 @@
               		    importDecl.setEndCharacter( ((CommonToken)id).getStopIndex() );
               		
             }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:259:3: ( '.' id= identifier )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:259:3: ( '.' id= identifier )*
             loop8:
             do {
                 int alt8=2;
                 int LA8_0 = input.LA(1);
 
-                if ( (LA8_0==67) ) {
+                if ( (LA8_0==69) ) {
                     alt8=1;
                 }
 
 
                 switch (alt8) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:259:5: '.' id= identifier
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:259:5: '.' id= identifier
             	    {
-            	    match(input,67,FOLLOW_67_in_import_name391); if (failed) return name;
+            	    match(input,69,FOLLOW_69_in_import_name391); if (failed) return name;
             	    pushFollow(FOLLOW_identifier_in_import_name395);
             	    id=identifier();
             	    _fsp--;
@@ -837,19 +839,19 @@
                 }
             } while (true);
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:266:3: (star= '.*' )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:266:3: (star= '.*' )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
-            if ( (LA9_0==68) ) {
+            if ( (LA9_0==70) ) {
                 alt9=1;
             }
             switch (alt9) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:266:5: star= '.*'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:266:5: star= '.*'
                     {
                     star=(Token)input.LT(1);
-                    match(input,68,FOLLOW_68_in_import_name419); if (failed) return name;
+                    match(input,70,FOLLOW_70_in_import_name419); if (failed) return name;
                     if ( backtracking==0 ) {
                        
                       		        name = name + star.getText(); 
@@ -879,7 +881,7 @@
 
 
     // $ANTLR start global
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:276:1: global : loc= GLOBAL type= dotted_name[null] id= identifier opt_semicolon ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:276:1: global : loc= GLOBAL type= dotted_name[null] id= identifier opt_semicolon ;
     public final void global() throws RecognitionException {
         Token loc=null;
         String type = null;
@@ -891,8 +893,8 @@
         	    GlobalDescr global = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:281:3: (loc= GLOBAL type= dotted_name[null] id= identifier opt_semicolon )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:281:3: loc= GLOBAL type= dotted_name[null] id= identifier opt_semicolon
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:281:3: (loc= GLOBAL type= dotted_name[null] id= identifier opt_semicolon )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:281:3: loc= GLOBAL type= dotted_name[null] id= identifier opt_semicolon
             {
             loc=(Token)input.LT(1);
             match(input,GLOBAL,FOLLOW_GLOBAL_in_global455); if (failed) return ;
@@ -942,7 +944,7 @@
 
 
     // $ANTLR start function
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:299:1: function : loc= FUNCTION (retType= dotted_name[null] )? n= identifier '(' ( (paramType= dotted_name[null] )? paramName= argument ( ',' (paramType= dotted_name[null] )? paramName= argument )* )? ')' body= curly_chunk[f] ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:299:1: function : loc= FUNCTION (retType= dotted_name[null] )? n= identifier '(' ( (paramType= dotted_name[null] )? paramName= argument ( ',' (paramType= dotted_name[null] )? paramName= argument )* )? ')' body= curly_chunk[f] ;
     public final void function() throws RecognitionException {
         Token loc=null;
         String retType = null;
@@ -960,25 +962,25 @@
         		FunctionDescr f = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:304:3: (loc= FUNCTION (retType= dotted_name[null] )? n= identifier '(' ( (paramType= dotted_name[null] )? paramName= argument ( ',' (paramType= dotted_name[null] )? paramName= argument )* )? ')' body= curly_chunk[f] )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:304:3: loc= FUNCTION (retType= dotted_name[null] )? n= identifier '(' ( (paramType= dotted_name[null] )? paramName= argument ( ',' (paramType= dotted_name[null] )? paramName= argument )* )? ')' body= curly_chunk[f]
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:304:3: (loc= FUNCTION (retType= dotted_name[null] )? n= identifier '(' ( (paramType= dotted_name[null] )? paramName= argument ( ',' (paramType= dotted_name[null] )? paramName= argument )* )? ')' body= curly_chunk[f] )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:304:3: loc= FUNCTION (retType= dotted_name[null] )? n= identifier '(' ( (paramType= dotted_name[null] )? paramName= argument ( ',' (paramType= dotted_name[null] )? paramName= argument )* )? ')' body= curly_chunk[f]
             {
             loc=(Token)input.LT(1);
             match(input,FUNCTION,FOLLOW_FUNCTION_in_function507); if (failed) return ;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:304:16: (retType= dotted_name[null] )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:304:16: (retType= dotted_name[null] )?
             int alt10=2;
             int LA10_0 = input.LA(1);
 
             if ( (LA10_0==ID) ) {
                 int LA10_1 = input.LA(2);
 
-                if ( ((LA10_1>=ATTRIBUTES && LA10_1<=WHEN)||LA10_1==ENABLED||LA10_1==SALIENCE||LA10_1==DURATION||(LA10_1>=ACCUMULATE && LA10_1<=OR)||(LA10_1>=CONTAINS && LA10_1<=EXCLUDES)||LA10_1==NULL||LA10_1==LEFT_SQUARE||(LA10_1>=AND && LA10_1<=THEN)||LA10_1==67) ) {
+                if ( ((LA10_1>=ATTRIBUTES && LA10_1<=WHEN)||LA10_1==ENABLED||LA10_1==SALIENCE||LA10_1==DURATION||(LA10_1>=ACCUMULATE && LA10_1<=OR)||(LA10_1>=CONTAINS && LA10_1<=MEMBEROF)||LA10_1==NULL||LA10_1==LEFT_SQUARE||(LA10_1>=AND && LA10_1<=THEN)||LA10_1==69) ) {
                     alt10=1;
                 }
             }
             switch (alt10) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:304:17: retType= dotted_name[null]
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:304:17: retType= dotted_name[null]
                     {
                     pushFollow(FOLLOW_dotted_name_in_function512);
                     retType=dotted_name(null);
@@ -1004,23 +1006,23 @@
               		
             }
             match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_function528); if (failed) return ;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:313:4: ( (paramType= dotted_name[null] )? paramName= argument ( ',' (paramType= dotted_name[null] )? paramName= argument )* )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:313:4: ( (paramType= dotted_name[null] )? paramName= argument ( ',' (paramType= dotted_name[null] )? paramName= argument )* )?
             int alt14=2;
             int LA14_0 = input.LA(1);
 
-            if ( ((LA14_0>=ATTRIBUTES && LA14_0<=WHEN)||LA14_0==ENABLED||LA14_0==SALIENCE||LA14_0==DURATION||(LA14_0>=ACCUMULATE && LA14_0<=OR)||(LA14_0>=CONTAINS && LA14_0<=EXCLUDES)||LA14_0==NULL||(LA14_0>=AND && LA14_0<=THEN)) ) {
+            if ( ((LA14_0>=ATTRIBUTES && LA14_0<=WHEN)||LA14_0==ENABLED||LA14_0==SALIENCE||LA14_0==DURATION||(LA14_0>=ACCUMULATE && LA14_0<=OR)||(LA14_0>=CONTAINS && LA14_0<=MEMBEROF)||LA14_0==NULL||(LA14_0>=AND && LA14_0<=THEN)) ) {
                 alt14=1;
             }
             switch (alt14) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:313:6: (paramType= dotted_name[null] )? paramName= argument ( ',' (paramType= dotted_name[null] )? paramName= argument )*
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:313:6: (paramType= dotted_name[null] )? paramName= argument ( ',' (paramType= dotted_name[null] )? paramName= argument )*
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:313:6: (paramType= dotted_name[null] )?
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:313:6: (paramType= dotted_name[null] )?
                     int alt11=2;
                     alt11 = dfa11.predict(input);
                     switch (alt11) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:313:7: paramType= dotted_name[null]
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:313:7: paramType= dotted_name[null]
                             {
                             pushFollow(FOLLOW_dotted_name_in_function538);
                             paramType=dotted_name(null);
@@ -1041,28 +1043,28 @@
                       					f.addParameter( paramType, paramName );
                       				
                     }
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:317:5: ( ',' (paramType= dotted_name[null] )? paramName= argument )*
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:317:5: ( ',' (paramType= dotted_name[null] )? paramName= argument )*
                     loop13:
                     do {
                         int alt13=2;
                         int LA13_0 = input.LA(1);
 
-                        if ( (LA13_0==66) ) {
+                        if ( (LA13_0==68) ) {
                             alt13=1;
                         }
 
 
                         switch (alt13) {
                     	case 1 :
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:317:7: ',' (paramType= dotted_name[null] )? paramName= argument
+                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:317:7: ',' (paramType= dotted_name[null] )? paramName= argument
                     	    {
-                    	    match(input,66,FOLLOW_66_in_function559); if (failed) return ;
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:317:11: (paramType= dotted_name[null] )?
+                    	    match(input,68,FOLLOW_68_in_function559); if (failed) return ;
+                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:317:11: (paramType= dotted_name[null] )?
                     	    int alt12=2;
                     	    alt12 = dfa12.predict(input);
                     	    switch (alt12) {
                     	        case 1 :
-                    	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:317:12: paramType= dotted_name[null]
+                    	            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:317:12: paramType= dotted_name[null]
                     	            {
                     	            pushFollow(FOLLOW_dotted_name_in_function564);
                     	            paramType=dotted_name(null);
@@ -1125,7 +1127,7 @@
 
 
     // $ANTLR start query
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:333:1: query returns [QueryDescr query] : loc= QUERY queryName= name ( normal_lhs_block[lhs] ) loc= END ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:333:1: query returns [QueryDescr query] : loc= QUERY queryName= name ( normal_lhs_block[lhs] ) loc= END ;
     public final QueryDescr query() throws RecognitionException {
         QueryDescr query = null;
 
@@ -1138,8 +1140,8 @@
         		AndDescr lhs = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:339:3: (loc= QUERY queryName= name ( normal_lhs_block[lhs] ) loc= END )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:339:3: loc= QUERY queryName= name ( normal_lhs_block[lhs] ) loc= END
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:339:3: (loc= QUERY queryName= name ( normal_lhs_block[lhs] ) loc= END )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:339:3: loc= QUERY queryName= name ( normal_lhs_block[lhs] ) loc= END
             {
             loc=(Token)input.LT(1);
             match(input,QUERY,FOLLOW_QUERY_in_query633); if (failed) return query;
@@ -1156,8 +1158,8 @@
               			lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
               		
             }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:347:3: ( normal_lhs_block[lhs] )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:348:4: normal_lhs_block[lhs]
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:347:3: ( normal_lhs_block[lhs] )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:348:4: normal_lhs_block[lhs]
             {
             pushFollow(FOLLOW_normal_lhs_block_in_query650);
             normal_lhs_block(lhs);
@@ -1189,7 +1191,7 @@
 
 
     // $ANTLR start template
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:358:1: template returns [FactTemplateDescr template] : loc= TEMPLATE templateName= identifier opt_semicolon (slot= template_slot )+ loc= END opt_semicolon ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:358:1: template returns [FactTemplateDescr template] : loc= TEMPLATE templateName= identifier opt_semicolon (slot= template_slot )+ loc= END opt_semicolon ;
     public final FactTemplateDescr template() throws RecognitionException {
         FactTemplateDescr template = null;
 
@@ -1203,8 +1205,8 @@
         		template = null;		
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:363:3: (loc= TEMPLATE templateName= identifier opt_semicolon (slot= template_slot )+ loc= END opt_semicolon )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:363:3: loc= TEMPLATE templateName= identifier opt_semicolon (slot= template_slot )+ loc= END opt_semicolon
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:363:3: (loc= TEMPLATE templateName= identifier opt_semicolon (slot= template_slot )+ loc= END opt_semicolon )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:363:3: loc= TEMPLATE templateName= identifier opt_semicolon (slot= template_slot )+ loc= END opt_semicolon
             {
             loc=(Token)input.LT(1);
             match(input,TEMPLATE,FOLLOW_TEMPLATE_in_template697); if (failed) return template;
@@ -1223,7 +1225,7 @@
               			template.setStartCharacter( ((CommonToken)loc).getStartIndex() );
               		
             }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:369:3: (slot= template_slot )+
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:369:3: (slot= template_slot )+
             int cnt15=0;
             loop15:
             do {
@@ -1237,7 +1239,7 @@
 
                 switch (alt15) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:370:4: slot= template_slot
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:370:4: slot= template_slot
             	    {
             	    pushFollow(FOLLOW_template_slot_in_template718);
             	    slot=template_slot();
@@ -1289,7 +1291,7 @@
 
 
     // $ANTLR start template_slot
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:381:1: template_slot returns [FieldTemplateDescr field] : fieldType= dotted_name[field] n= identifier opt_semicolon ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:381:1: template_slot returns [FieldTemplateDescr field] : fieldType= dotted_name[field] n= identifier opt_semicolon ;
     public final FieldTemplateDescr template_slot() throws RecognitionException {
         FieldTemplateDescr field = null;
 
@@ -1302,8 +1304,8 @@
         		field = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:386:11: (fieldType= dotted_name[field] n= identifier opt_semicolon )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:386:11: fieldType= dotted_name[field] n= identifier opt_semicolon
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:386:11: (fieldType= dotted_name[field] n= identifier opt_semicolon )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:386:11: fieldType= dotted_name[field] n= identifier opt_semicolon
             {
             if ( backtracking==0 ) {
 
@@ -1350,7 +1352,7 @@
 
 
     // $ANTLR start rule
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:402:1: rule returns [RuleDescr rule] : loc= RULE ruleName= name rule_attributes[rule] (loc= WHEN ( ':' )? ( normal_lhs_block[lhs] ) )? rhs_chunk[rule] ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:402:1: rule returns [RuleDescr rule] : loc= RULE ruleName= name rule_attributes[rule] (loc= WHEN ( ':' )? ( normal_lhs_block[lhs] ) )? rhs_chunk[rule] ;
     public final RuleDescr rule() throws RecognitionException {
         RuleDescr rule = null;
 
@@ -1364,8 +1366,8 @@
         		AndDescr lhs = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:409:3: (loc= RULE ruleName= name rule_attributes[rule] (loc= WHEN ( ':' )? ( normal_lhs_block[lhs] ) )? rhs_chunk[rule] )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:409:3: loc= RULE ruleName= name rule_attributes[rule] (loc= WHEN ( ':' )? ( normal_lhs_block[lhs] ) )? rhs_chunk[rule]
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:409:3: (loc= RULE ruleName= name rule_attributes[rule] (loc= WHEN ( ':' )? ( normal_lhs_block[lhs] ) )? rhs_chunk[rule] )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:409:3: loc= RULE ruleName= name rule_attributes[rule] (loc= WHEN ( ':' )? ( normal_lhs_block[lhs] ) )? rhs_chunk[rule]
             {
             loc=(Token)input.LT(1);
             match(input,RULE,FOLLOW_RULE_in_rule836); if (failed) return rule;
@@ -1385,7 +1387,7 @@
             rule_attributes(rule);
             _fsp--;
             if (failed) return rule;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:417:3: (loc= WHEN ( ':' )? ( normal_lhs_block[lhs] ) )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:417:3: (loc= WHEN ( ':' )? ( normal_lhs_block[lhs] ) )?
             int alt17=2;
             int LA17_0 = input.LA(1);
 
@@ -1394,22 +1396,22 @@
             }
             switch (alt17) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:417:5: loc= WHEN ( ':' )? ( normal_lhs_block[lhs] )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:417:5: loc= WHEN ( ':' )? ( normal_lhs_block[lhs] )
                     {
                     loc=(Token)input.LT(1);
                     match(input,WHEN,FOLLOW_WHEN_in_rule858); if (failed) return rule;
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:417:14: ( ':' )?
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:417:14: ( ':' )?
                     int alt16=2;
                     int LA16_0 = input.LA(1);
 
-                    if ( (LA16_0==65) ) {
+                    if ( (LA16_0==67) ) {
                         alt16=1;
                     }
                     switch (alt16) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:0:0: ':'
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:0:0: ':'
                             {
-                            match(input,65,FOLLOW_65_in_rule860); if (failed) return rule;
+                            match(input,67,FOLLOW_67_in_rule860); if (failed) return rule;
 
                             }
                             break;
@@ -1423,8 +1425,8 @@
                       				lhs.setStartCharacter( ((CommonToken)loc).getStartIndex() );
                       			
                     }
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:423:4: ( normal_lhs_block[lhs] )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:425:5: normal_lhs_block[lhs]
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:423:4: ( normal_lhs_block[lhs] )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:425:5: normal_lhs_block[lhs]
                     {
                     pushFollow(FOLLOW_normal_lhs_block_in_rule878);
                     normal_lhs_block(lhs);
@@ -1459,16 +1461,16 @@
 
 
     // $ANTLR start rule_attributes
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:434:1: rule_attributes[RuleDescr rule] : ( ATTRIBUTES ':' )? ( ( ',' )? a= rule_attribute )* ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:434:1: rule_attributes[RuleDescr rule] : ( ATTRIBUTES ':' )? ( ( ',' )? a= rule_attribute )* ;
     public final void rule_attributes(RuleDescr rule) throws RecognitionException {
         AttributeDescr a = null;
 
 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:436:4: ( ( ATTRIBUTES ':' )? ( ( ',' )? a= rule_attribute )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:436:4: ( ATTRIBUTES ':' )? ( ( ',' )? a= rule_attribute )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:436:4: ( ( ATTRIBUTES ':' )? ( ( ',' )? a= rule_attribute )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:436:4: ( ATTRIBUTES ':' )? ( ( ',' )? a= rule_attribute )*
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:436:4: ( ATTRIBUTES ':' )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:436:4: ( ATTRIBUTES ':' )?
             int alt18=2;
             int LA18_0 = input.LA(1);
 
@@ -1477,43 +1479,43 @@
             }
             switch (alt18) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:436:5: ATTRIBUTES ':'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:436:5: ATTRIBUTES ':'
                     {
                     match(input,ATTRIBUTES,FOLLOW_ATTRIBUTES_in_rule_attributes920); if (failed) return ;
-                    match(input,65,FOLLOW_65_in_rule_attributes922); if (failed) return ;
+                    match(input,67,FOLLOW_67_in_rule_attributes922); if (failed) return ;
 
                     }
                     break;
 
             }
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:437:4: ( ( ',' )? a= rule_attribute )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:437:4: ( ( ',' )? a= rule_attribute )*
             loop20:
             do {
                 int alt20=2;
                 int LA20_0 = input.LA(1);
 
-                if ( (LA20_0==DATE_EFFECTIVE||(LA20_0>=DATE_EXPIRES && LA20_0<=ENABLED)||LA20_0==SALIENCE||(LA20_0>=NO_LOOP && LA20_0<=LOCK_ON_ACTIVE)||LA20_0==66) ) {
+                if ( (LA20_0==DATE_EFFECTIVE||(LA20_0>=DATE_EXPIRES && LA20_0<=ENABLED)||LA20_0==SALIENCE||(LA20_0>=NO_LOOP && LA20_0<=LOCK_ON_ACTIVE)||LA20_0==68) ) {
                     alt20=1;
                 }
 
 
                 switch (alt20) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:437:6: ( ',' )? a= rule_attribute
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:437:6: ( ',' )? a= rule_attribute
             	    {
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:437:6: ( ',' )?
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:437:6: ( ',' )?
             	    int alt19=2;
             	    int LA19_0 = input.LA(1);
 
-            	    if ( (LA19_0==66) ) {
+            	    if ( (LA19_0==68) ) {
             	        alt19=1;
             	    }
             	    switch (alt19) {
             	        case 1 :
-            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:0:0: ','
+            	            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:0:0: ','
             	            {
-            	            match(input,66,FOLLOW_66_in_rule_attributes931); if (failed) return ;
+            	            match(input,68,FOLLOW_68_in_rule_attributes931); if (failed) return ;
 
             	            }
             	            break;
@@ -1554,7 +1556,7 @@
 
 
     // $ANTLR start rule_attribute
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:446:1: rule_attribute returns [AttributeDescr d] : (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:446:1: rule_attribute returns [AttributeDescr d] : (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 d = null;
 
@@ -1565,7 +1567,7 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:451:4: (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:451:4: (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 alt21=12;
             switch ( input.LA(1) ) {
             case SALIENCE:
@@ -1638,7 +1640,7 @@
 
             switch (alt21) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:451:4: a= salience
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:451:4: a= salience
                     {
                     pushFollow(FOLLOW_salience_in_rule_attribute977);
                     a=salience();
@@ -1651,7 +1653,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:452:5: a= no_loop
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:452:5: a= no_loop
                     {
                     pushFollow(FOLLOW_no_loop_in_rule_attribute987);
                     a=no_loop();
@@ -1664,7 +1666,7 @@
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:453:5: a= agenda_group
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:453:5: a= agenda_group
                     {
                     pushFollow(FOLLOW_agenda_group_in_rule_attribute998);
                     a=agenda_group();
@@ -1677,7 +1679,7 @@
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:454:5: a= duration
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:454:5: a= duration
                     {
                     pushFollow(FOLLOW_duration_in_rule_attribute1011);
                     a=duration();
@@ -1690,7 +1692,7 @@
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:455:5: a= activation_group
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:455:5: a= activation_group
                     {
                     pushFollow(FOLLOW_activation_group_in_rule_attribute1025);
                     a=activation_group();
@@ -1703,7 +1705,7 @@
                     }
                     break;
                 case 6 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:456:5: a= auto_focus
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:456:5: a= auto_focus
                     {
                     pushFollow(FOLLOW_auto_focus_in_rule_attribute1036);
                     a=auto_focus();
@@ -1716,7 +1718,7 @@
                     }
                     break;
                 case 7 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:457:5: a= date_effective
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:457:5: a= date_effective
                     {
                     pushFollow(FOLLOW_date_effective_in_rule_attribute1047);
                     a=date_effective();
@@ -1729,7 +1731,7 @@
                     }
                     break;
                 case 8 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:458:5: a= date_expires
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:458:5: a= date_expires
                     {
                     pushFollow(FOLLOW_date_expires_in_rule_attribute1057);
                     a=date_expires();
@@ -1742,7 +1744,7 @@
                     }
                     break;
                 case 9 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:459:5: a= enabled
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:459:5: a= enabled
                     {
                     pushFollow(FOLLOW_enabled_in_rule_attribute1067);
                     a=enabled();
@@ -1755,7 +1757,7 @@
                     }
                     break;
                 case 10 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:460:5: a= ruleflow_group
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:460:5: a= ruleflow_group
                     {
                     pushFollow(FOLLOW_ruleflow_group_in_rule_attribute1077);
                     a=ruleflow_group();
@@ -1768,7 +1770,7 @@
                     }
                     break;
                 case 11 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:461:5: a= lock_on_active
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:461:5: a= lock_on_active
                     {
                     pushFollow(FOLLOW_lock_on_active_in_rule_attribute1087);
                     a=lock_on_active();
@@ -1781,7 +1783,7 @@
                     }
                     break;
                 case 12 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:462:5: a= dialect
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:462:5: a= dialect
                     {
                     pushFollow(FOLLOW_dialect_in_rule_attribute1096);
                     a=dialect();
@@ -1808,7 +1810,7 @@
 
 
     // $ANTLR start date_effective
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:466:1: date_effective returns [AttributeDescr d] : loc= DATE_EFFECTIVE val= STRING ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:466:1: date_effective returns [AttributeDescr d] : loc= DATE_EFFECTIVE val= STRING ;
     public final AttributeDescr date_effective() throws RecognitionException {
         AttributeDescr d = null;
 
@@ -1819,8 +1821,8 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:471:3: (loc= DATE_EFFECTIVE val= STRING )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:471:3: loc= DATE_EFFECTIVE val= STRING
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:471:3: (loc= DATE_EFFECTIVE val= STRING )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:471:3: loc= DATE_EFFECTIVE val= STRING
             {
             loc=(Token)input.LT(1);
             match(input,DATE_EFFECTIVE,FOLLOW_DATE_EFFECTIVE_in_date_effective1128); if (failed) return d;
@@ -1850,7 +1852,7 @@
 
 
     // $ANTLR start date_expires
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:481:1: date_expires returns [AttributeDescr d] : loc= DATE_EXPIRES val= STRING ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:481:1: date_expires returns [AttributeDescr d] : loc= DATE_EXPIRES val= STRING ;
     public final AttributeDescr date_expires() throws RecognitionException {
         AttributeDescr d = null;
 
@@ -1861,8 +1863,8 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:486:3: (loc= DATE_EXPIRES val= STRING )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:486:3: loc= DATE_EXPIRES val= STRING
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:486:3: (loc= DATE_EXPIRES val= STRING )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:486:3: loc= DATE_EXPIRES val= STRING
             {
             loc=(Token)input.LT(1);
             match(input,DATE_EXPIRES,FOLLOW_DATE_EXPIRES_in_date_expires1165); if (failed) return d;
@@ -1892,7 +1894,7 @@
 
 
     // $ANTLR start enabled
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:497:1: enabled returns [AttributeDescr d] : loc= ENABLED t= BOOL ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:497:1: enabled returns [AttributeDescr d] : loc= ENABLED t= BOOL ;
     public final AttributeDescr enabled() throws RecognitionException {
         AttributeDescr d = null;
 
@@ -1903,8 +1905,8 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:502:4: (loc= ENABLED t= BOOL )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:502:4: loc= ENABLED t= BOOL
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:502:4: (loc= ENABLED t= BOOL )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:502:4: loc= ENABLED t= BOOL
             {
             loc=(Token)input.LT(1);
             match(input,ENABLED,FOLLOW_ENABLED_in_enabled1204); if (failed) return d;
@@ -1934,7 +1936,7 @@
 
 
     // $ANTLR start salience
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:515:1: salience returns [AttributeDescr d ] : loc= SALIENCE i= INT ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:515:1: salience returns [AttributeDescr d ] : loc= SALIENCE i= INT ;
     public final AttributeDescr salience() throws RecognitionException {
         AttributeDescr d = null;
 
@@ -1945,8 +1947,8 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:520:3: (loc= SALIENCE i= INT )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:520:3: loc= SALIENCE i= INT
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:520:3: (loc= SALIENCE i= INT )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:520:3: loc= SALIENCE i= INT
             {
             loc=(Token)input.LT(1);
             match(input,SALIENCE,FOLLOW_SALIENCE_in_salience1253); if (failed) return d;
@@ -1976,7 +1978,7 @@
 
 
     // $ANTLR start no_loop
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:529:1: no_loop returns [AttributeDescr d] : ( (loc= NO_LOOP ) | (loc= NO_LOOP t= BOOL ) );
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:529:1: no_loop returns [AttributeDescr d] : ( (loc= NO_LOOP ) | (loc= NO_LOOP t= BOOL ) );
     public final AttributeDescr no_loop() throws RecognitionException {
         AttributeDescr d = null;
 
@@ -1987,7 +1989,7 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:534:3: ( (loc= NO_LOOP ) | (loc= NO_LOOP t= BOOL ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:534:3: ( (loc= NO_LOOP ) | (loc= NO_LOOP t= BOOL ) )
             int alt22=2;
             int LA22_0 = input.LA(1);
 
@@ -1997,7 +1999,7 @@
                 if ( (LA22_1==BOOL) ) {
                     alt22=2;
                 }
-                else if ( (LA22_1==EOF||(LA22_1>=IMPORT && LA22_1<=QUERY)||(LA22_1>=TEMPLATE && LA22_1<=DATE_EFFECTIVE)||(LA22_1>=DATE_EXPIRES && LA22_1<=ENABLED)||LA22_1==SALIENCE||(LA22_1>=NO_LOOP && LA22_1<=LOCK_ON_ACTIVE)||LA22_1==THEN||LA22_1==66) ) {
+                else if ( (LA22_1==EOF||(LA22_1>=IMPORT && LA22_1<=QUERY)||(LA22_1>=TEMPLATE && LA22_1<=DATE_EFFECTIVE)||(LA22_1>=DATE_EXPIRES && LA22_1<=ENABLED)||LA22_1==SALIENCE||(LA22_1>=NO_LOOP && LA22_1<=LOCK_ON_ACTIVE)||LA22_1==THEN||LA22_1==68) ) {
                     alt22=1;
                 }
                 else {
@@ -2017,10 +2019,10 @@
             }
             switch (alt22) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:534:3: (loc= NO_LOOP )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:534:3: (loc= NO_LOOP )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:534:3: (loc= NO_LOOP )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:535:4: loc= NO_LOOP
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:534:3: (loc= NO_LOOP )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:535:4: loc= NO_LOOP
                     {
                     loc=(Token)input.LT(1);
                     match(input,NO_LOOP,FOLLOW_NO_LOOP_in_no_loop1295); if (failed) return d;
@@ -2039,10 +2041,10 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:544:3: (loc= NO_LOOP t= BOOL )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:544:3: (loc= NO_LOOP t= BOOL )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:544:3: (loc= NO_LOOP t= BOOL )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:545:4: loc= NO_LOOP t= BOOL
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:544:3: (loc= NO_LOOP t= BOOL )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:545:4: loc= NO_LOOP t= BOOL
                     {
                     loc=(Token)input.LT(1);
                     match(input,NO_LOOP,FOLLOW_NO_LOOP_in_no_loop1323); if (failed) return d;
@@ -2077,7 +2079,7 @@
 
 
     // $ANTLR start auto_focus
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:557:1: auto_focus returns [AttributeDescr d] : ( (loc= AUTO_FOCUS ) | (loc= AUTO_FOCUS t= BOOL ) );
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:557:1: auto_focus returns [AttributeDescr d] : ( (loc= AUTO_FOCUS ) | (loc= AUTO_FOCUS t= BOOL ) );
     public final AttributeDescr auto_focus() throws RecognitionException {
         AttributeDescr d = null;
 
@@ -2088,7 +2090,7 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:562:3: ( (loc= AUTO_FOCUS ) | (loc= AUTO_FOCUS t= BOOL ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:562:3: ( (loc= AUTO_FOCUS ) | (loc= AUTO_FOCUS t= BOOL ) )
             int alt23=2;
             int LA23_0 = input.LA(1);
 
@@ -2098,7 +2100,7 @@
                 if ( (LA23_1==BOOL) ) {
                     alt23=2;
                 }
-                else if ( (LA23_1==EOF||(LA23_1>=IMPORT && LA23_1<=QUERY)||(LA23_1>=TEMPLATE && LA23_1<=DATE_EFFECTIVE)||(LA23_1>=DATE_EXPIRES && LA23_1<=ENABLED)||LA23_1==SALIENCE||(LA23_1>=NO_LOOP && LA23_1<=LOCK_ON_ACTIVE)||LA23_1==THEN||LA23_1==66) ) {
+                else if ( (LA23_1==EOF||(LA23_1>=IMPORT && LA23_1<=QUERY)||(LA23_1>=TEMPLATE && LA23_1<=DATE_EFFECTIVE)||(LA23_1>=DATE_EXPIRES && LA23_1<=ENABLED)||LA23_1==SALIENCE||(LA23_1>=NO_LOOP && LA23_1<=LOCK_ON_ACTIVE)||LA23_1==THEN||LA23_1==68) ) {
                     alt23=1;
                 }
                 else {
@@ -2118,10 +2120,10 @@
             }
             switch (alt23) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:562:3: (loc= AUTO_FOCUS )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:562:3: (loc= AUTO_FOCUS )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:562:3: (loc= AUTO_FOCUS )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:563:4: loc= AUTO_FOCUS
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:562:3: (loc= AUTO_FOCUS )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:563:4: loc= AUTO_FOCUS
                     {
                     loc=(Token)input.LT(1);
                     match(input,AUTO_FOCUS,FOLLOW_AUTO_FOCUS_in_auto_focus1376); if (failed) return d;
@@ -2140,10 +2142,10 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:572:3: (loc= AUTO_FOCUS t= BOOL )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:572:3: (loc= AUTO_FOCUS t= BOOL )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:572:3: (loc= AUTO_FOCUS t= BOOL )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:573:4: loc= AUTO_FOCUS t= BOOL
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:572:3: (loc= AUTO_FOCUS t= BOOL )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:573:4: loc= AUTO_FOCUS t= BOOL
                     {
                     loc=(Token)input.LT(1);
                     match(input,AUTO_FOCUS,FOLLOW_AUTO_FOCUS_in_auto_focus1404); if (failed) return d;
@@ -2178,7 +2180,7 @@
 
 
     // $ANTLR start activation_group
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:585:1: activation_group returns [AttributeDescr d] : loc= ACTIVATION_GROUP n= STRING ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:585:1: activation_group returns [AttributeDescr d] : loc= ACTIVATION_GROUP n= STRING ;
     public final AttributeDescr activation_group() throws RecognitionException {
         AttributeDescr d = null;
 
@@ -2189,8 +2191,8 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:590:3: (loc= ACTIVATION_GROUP n= STRING )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:590:3: loc= ACTIVATION_GROUP n= STRING
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:590:3: (loc= ACTIVATION_GROUP n= STRING )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:590:3: loc= ACTIVATION_GROUP n= STRING
             {
             loc=(Token)input.LT(1);
             match(input,ACTIVATION_GROUP,FOLLOW_ACTIVATION_GROUP_in_activation_group1453); if (failed) return d;
@@ -2220,7 +2222,7 @@
 
 
     // $ANTLR start ruleflow_group
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:599:1: ruleflow_group returns [AttributeDescr d] : loc= RULEFLOW_GROUP n= STRING ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:599:1: ruleflow_group returns [AttributeDescr d] : loc= RULEFLOW_GROUP n= STRING ;
     public final AttributeDescr ruleflow_group() throws RecognitionException {
         AttributeDescr d = null;
 
@@ -2231,8 +2233,8 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:604:3: (loc= RULEFLOW_GROUP n= STRING )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:604:3: loc= RULEFLOW_GROUP n= STRING
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:604:3: (loc= RULEFLOW_GROUP n= STRING )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:604:3: loc= RULEFLOW_GROUP n= STRING
             {
             loc=(Token)input.LT(1);
             match(input,RULEFLOW_GROUP,FOLLOW_RULEFLOW_GROUP_in_ruleflow_group1489); if (failed) return d;
@@ -2262,7 +2264,7 @@
 
 
     // $ANTLR start agenda_group
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:613:1: agenda_group returns [AttributeDescr d] : loc= AGENDA_GROUP n= STRING ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:613:1: agenda_group returns [AttributeDescr d] : loc= AGENDA_GROUP n= STRING ;
     public final AttributeDescr agenda_group() throws RecognitionException {
         AttributeDescr d = null;
 
@@ -2273,8 +2275,8 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:618:3: (loc= AGENDA_GROUP n= STRING )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:618:3: loc= AGENDA_GROUP n= STRING
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:618:3: (loc= AGENDA_GROUP n= STRING )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:618:3: loc= AGENDA_GROUP n= STRING
             {
             loc=(Token)input.LT(1);
             match(input,AGENDA_GROUP,FOLLOW_AGENDA_GROUP_in_agenda_group1525); if (failed) return d;
@@ -2304,7 +2306,7 @@
 
 
     // $ANTLR start duration
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:628:1: duration returns [AttributeDescr d] : loc= DURATION i= INT ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:628:1: duration returns [AttributeDescr d] : loc= DURATION i= INT ;
     public final AttributeDescr duration() throws RecognitionException {
         AttributeDescr d = null;
 
@@ -2315,8 +2317,8 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:633:3: (loc= DURATION i= INT )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:633:3: loc= DURATION i= INT
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:633:3: (loc= DURATION i= INT )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:633:3: loc= DURATION i= INT
             {
             loc=(Token)input.LT(1);
             match(input,DURATION,FOLLOW_DURATION_in_duration1563); if (failed) return d;
@@ -2346,7 +2348,7 @@
 
 
     // $ANTLR start dialect
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:642:1: dialect returns [AttributeDescr d] : loc= DIALECT n= STRING ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:642:1: dialect returns [AttributeDescr d] : loc= DIALECT n= STRING ;
     public final AttributeDescr dialect() throws RecognitionException {
         AttributeDescr d = null;
 
@@ -2357,8 +2359,8 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:647:3: (loc= DIALECT n= STRING )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:647:3: loc= DIALECT n= STRING
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:647:3: (loc= DIALECT n= STRING )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:647:3: loc= DIALECT n= STRING
             {
             loc=(Token)input.LT(1);
             match(input,DIALECT,FOLLOW_DIALECT_in_dialect1599); if (failed) return d;
@@ -2388,7 +2390,7 @@
 
 
     // $ANTLR start lock_on_active
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:661:1: lock_on_active returns [AttributeDescr d] : ( (loc= LOCK_ON_ACTIVE ) | (loc= LOCK_ON_ACTIVE t= BOOL ) );
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:661:1: lock_on_active returns [AttributeDescr d] : ( (loc= LOCK_ON_ACTIVE ) | (loc= LOCK_ON_ACTIVE t= BOOL ) );
     public final AttributeDescr lock_on_active() throws RecognitionException {
         AttributeDescr d = null;
 
@@ -2399,7 +2401,7 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:666:3: ( (loc= LOCK_ON_ACTIVE ) | (loc= LOCK_ON_ACTIVE t= BOOL ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:666:3: ( (loc= LOCK_ON_ACTIVE ) | (loc= LOCK_ON_ACTIVE t= BOOL ) )
             int alt24=2;
             int LA24_0 = input.LA(1);
 
@@ -2409,7 +2411,7 @@
                 if ( (LA24_1==BOOL) ) {
                     alt24=2;
                 }
-                else if ( (LA24_1==EOF||(LA24_1>=IMPORT && LA24_1<=QUERY)||(LA24_1>=TEMPLATE && LA24_1<=DATE_EFFECTIVE)||(LA24_1>=DATE_EXPIRES && LA24_1<=ENABLED)||LA24_1==SALIENCE||(LA24_1>=NO_LOOP && LA24_1<=LOCK_ON_ACTIVE)||LA24_1==THEN||LA24_1==66) ) {
+                else if ( (LA24_1==EOF||(LA24_1>=IMPORT && LA24_1<=QUERY)||(LA24_1>=TEMPLATE && LA24_1<=DATE_EFFECTIVE)||(LA24_1>=DATE_EXPIRES && LA24_1<=ENABLED)||LA24_1==SALIENCE||(LA24_1>=NO_LOOP && LA24_1<=LOCK_ON_ACTIVE)||LA24_1==THEN||LA24_1==68) ) {
                     alt24=1;
                 }
                 else {
@@ -2429,10 +2431,10 @@
             }
             switch (alt24) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:666:3: (loc= LOCK_ON_ACTIVE )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:666:3: (loc= LOCK_ON_ACTIVE )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:666:3: (loc= LOCK_ON_ACTIVE )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:667:4: loc= LOCK_ON_ACTIVE
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:666:3: (loc= LOCK_ON_ACTIVE )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:667:4: loc= LOCK_ON_ACTIVE
                     {
                     loc=(Token)input.LT(1);
                     match(input,LOCK_ON_ACTIVE,FOLLOW_LOCK_ON_ACTIVE_in_lock_on_active1652); if (failed) return d;
@@ -2451,10 +2453,10 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:676:3: (loc= LOCK_ON_ACTIVE t= BOOL )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:676:3: (loc= LOCK_ON_ACTIVE t= BOOL )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:676:3: (loc= LOCK_ON_ACTIVE t= BOOL )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:677:4: loc= LOCK_ON_ACTIVE t= BOOL
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:676:3: (loc= LOCK_ON_ACTIVE t= BOOL )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:677:4: loc= LOCK_ON_ACTIVE t= BOOL
                     {
                     loc=(Token)input.LT(1);
                     match(input,LOCK_ON_ACTIVE,FOLLOW_LOCK_ON_ACTIVE_in_lock_on_active1680); if (failed) return d;
@@ -2489,16 +2491,16 @@
 
 
     // $ANTLR start normal_lhs_block
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:689:1: normal_lhs_block[AndDescr descr] : (d= lhs[descr] )* ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:689:1: normal_lhs_block[AndDescr descr] : (d= lhs[descr] )* ;
     public final void normal_lhs_block(AndDescr descr) throws RecognitionException {
         BaseDescr d = null;
 
 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:691:3: ( (d= lhs[descr] )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:691:3: (d= lhs[descr] )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:691:3: ( (d= lhs[descr] )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:691:3: (d= lhs[descr] )*
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:691:3: (d= lhs[descr] )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:691:3: (d= lhs[descr] )*
             loop25:
             do {
                 int alt25=2;
@@ -2511,7 +2513,7 @@
 
                 switch (alt25) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:691:5: d= lhs[descr]
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:691:5: d= lhs[descr]
             	    {
             	    pushFollow(FOLLOW_lhs_in_normal_lhs_block1722);
             	    d=lhs(descr);
@@ -2545,7 +2547,7 @@
 
 
     // $ANTLR start lhs
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:697: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:697:1: lhs[ConditionalElementDescr ce] returns [BaseDescr d] : l= lhs_or ;
     public final BaseDescr lhs(ConditionalElementDescr ce) throws RecognitionException {
         BaseDescr d = null;
 
@@ -2556,8 +2558,8 @@
         		d=null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:701:4: (l= lhs_or )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:701:4: l= lhs_or
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:701:4: (l= lhs_or )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:701:4: l= lhs_or
             {
             pushFollow(FOLLOW_lhs_or_in_lhs1759);
             l=lhs_or();
@@ -2582,7 +2584,7 @@
 
 
     // $ANTLR start lhs_pattern
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:705:1: lhs_pattern returns [BaseDescr d] : (f= fact_binding | f= fact );
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:705:1: lhs_pattern returns [BaseDescr d] : (f= fact_binding | f= fact );
     public final BaseDescr lhs_pattern() throws RecognitionException {
         BaseDescr d = null;
 
@@ -2593,17 +2595,17 @@
         		d=null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:709:4: (f= fact_binding | f= fact )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:709:4: (f= fact_binding | f= fact )
             int alt26=2;
             int LA26_0 = input.LA(1);
 
             if ( (LA26_0==ID) ) {
                 int LA26_1 = input.LA(2);
 
-                if ( (LA26_1==65) ) {
+                if ( (LA26_1==67) ) {
                     alt26=1;
                 }
-                else if ( (LA26_1==LEFT_PAREN||LA26_1==LEFT_SQUARE||LA26_1==67) ) {
+                else if ( (LA26_1==LEFT_PAREN||LA26_1==LEFT_SQUARE||LA26_1==69) ) {
                     alt26=2;
                 }
                 else {
@@ -2623,7 +2625,7 @@
             }
             switch (alt26) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:709:4: f= fact_binding
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:709:4: f= fact_binding
                     {
                     pushFollow(FOLLOW_fact_binding_in_lhs_pattern1787);
                     f=fact_binding();
@@ -2636,7 +2638,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:710:4: f= fact
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:710:4: f= fact
                     {
                     pushFollow(FOLLOW_fact_in_lhs_pattern1796);
                     f=fact();
@@ -2663,7 +2665,7 @@
 
 
     // $ANTLR start from_statement
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:713: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:713:1: from_statement returns [FromDescr d] : ds= from_source[d] ;
     public final FromDescr from_statement() throws RecognitionException {
         FromDescr d = null;
 
@@ -2674,8 +2676,8 @@
         		d=factory.createFrom();
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:718:2: (ds= from_source[d] )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:718:2: ds= from_source[d]
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:718:2: (ds= from_source[d] )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:718:2: ds= from_source[d]
             {
             pushFollow(FOLLOW_from_source_in_from_statement1823);
             ds=from_source(d);
@@ -2703,7 +2705,7 @@
 
 
     // $ANTLR start from_source
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:728:1: from_source[FromDescr from] returns [DeclarativeInvokerDescr ds] : ident= identifier (args= paren_chunk[from] )? ( expression_chain[from, ad] )? ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:728:1: from_source[FromDescr from] returns [DeclarativeInvokerDescr ds] : ident= identifier (args= paren_chunk[from] )? ( expression_chain[from, ad] )? ;
     public final DeclarativeInvokerDescr from_source(FromDescr from) throws RecognitionException {
         DeclarativeInvokerDescr ds = null;
 
@@ -2717,8 +2719,8 @@
         		AccessorDescr ad = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:734:3: (ident= identifier (args= paren_chunk[from] )? ( expression_chain[from, ad] )? )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:734:3: ident= identifier (args= paren_chunk[from] )? ( expression_chain[from, ad] )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:734:3: (ident= identifier (args= paren_chunk[from] )? ( expression_chain[from, ad] )? )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:734:3: ident= identifier (args= paren_chunk[from] )? ( expression_chain[from, ad] )?
             {
             pushFollow(FOLLOW_identifier_in_from_source1865);
             ident=identifier();
@@ -2733,7 +2735,7 @@
               			ds = ad;
               		
             }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:742:3: (args= paren_chunk[from] )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:742:3: (args= paren_chunk[from] )?
             int alt27=2;
             int LA27_0 = input.LA(1);
 
@@ -2746,7 +2748,7 @@
             }
             switch (alt27) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:742:4: args= paren_chunk[from]
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:742:4: args= paren_chunk[from]
                     {
                     pushFollow(FOLLOW_paren_chunk_in_from_source1876);
                     args=paren_chunk(from);
@@ -2771,16 +2773,16 @@
 
             }
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:755:3: ( expression_chain[from, ad] )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:755:3: ( expression_chain[from, ad] )?
             int alt28=2;
             int LA28_0 = input.LA(1);
 
-            if ( (LA28_0==67) ) {
+            if ( (LA28_0==69) ) {
                 alt28=1;
             }
             switch (alt28) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:0:0: expression_chain[from, ad]
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:0:0: expression_chain[from, ad]
                     {
                     pushFollow(FOLLOW_expression_chain_in_from_source1890);
                     expression_chain(from,  ad);
@@ -2808,7 +2810,7 @@
 
 
     // $ANTLR start expression_chain
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:758:1: expression_chain[FromDescr from, AccessorDescr as] : ( '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )? ( expression_chain[from, as] )? ) ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:758:1: expression_chain[FromDescr from, AccessorDescr as] : ( '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )? ( expression_chain[from, as] )? ) ;
     public final void expression_chain(FromDescr from, AccessorDescr as) throws RecognitionException {
         Token field = null;
 
@@ -2822,13 +2824,13 @@
         	    	MethodAccessDescr ma = null;	
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:2: ( ( '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )? ( expression_chain[from, as] )? ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:2: ( '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )? ( expression_chain[from, as] )? )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:2: ( ( '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )? ( expression_chain[from, as] )? ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:2: ( '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )? ( expression_chain[from, as] )? )
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:2: ( '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )? ( expression_chain[from, as] )? )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:4: '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )? ( expression_chain[from, as] )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:2: ( '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )? ( expression_chain[from, as] )? )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:4: '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )? ( expression_chain[from, as] )?
             {
-            match(input,67,FOLLOW_67_in_expression_chain1915); if (failed) return ;
+            match(input,69,FOLLOW_69_in_expression_chain1915); if (failed) return ;
             pushFollow(FOLLOW_identifier_in_expression_chain1919);
             field=identifier();
             _fsp--;
@@ -2841,7 +2843,7 @@
               		fa.setEndCharacter( ((CommonToken)field).getStopIndex() );
               	    
             }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:771:4: ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:771:4: ( ( LEFT_SQUARE )=>sqarg= square_chunk[from] | ( LEFT_PAREN )=>paarg= paren_chunk[from] )?
             int alt29=3;
             int LA29_0 = input.LA(1);
 
@@ -2857,7 +2859,7 @@
             }
             switch (alt29) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:772:6: ( LEFT_SQUARE )=>sqarg= square_chunk[from]
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:772:6: ( LEFT_SQUARE )=>sqarg= square_chunk[from]
                     {
                     pushFollow(FOLLOW_square_chunk_in_expression_chain1950);
                     sqarg=square_chunk(from);
@@ -2872,7 +2874,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:777:6: ( LEFT_PAREN )=>paarg= paren_chunk[from]
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:777:6: ( LEFT_PAREN )=>paarg= paren_chunk[from]
                     {
                     pushFollow(FOLLOW_paren_chunk_in_expression_chain1984);
                     paarg=paren_chunk(from);
@@ -2900,16 +2902,16 @@
               	      }
               	  
             }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:791:4: ( expression_chain[from, as] )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:791:4: ( expression_chain[from, as] )?
             int alt30=2;
             int LA30_0 = input.LA(1);
 
-            if ( (LA30_0==67) ) {
+            if ( (LA30_0==69) ) {
                 alt30=1;
             }
             switch (alt30) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:0:0: expression_chain[from, as]
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:0:0: expression_chain[from, as]
                     {
                     pushFollow(FOLLOW_expression_chain_in_expression_chain2005);
                     expression_chain(from,  as);
@@ -2940,7 +2942,7 @@
 
 
     // $ANTLR start accumulate_statement
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:795:1: accumulate_statement returns [AccumulateDescr d] : loc= ACCUMULATE '(' pattern= lhs_pattern ',' INIT text= paren_chunk[null] ',' ACTION text= paren_chunk[null] ',' RESULT text= paren_chunk[null] loc= ')' ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:795:1: accumulate_statement returns [AccumulateDescr d] : loc= ACCUMULATE '(' pattern= lhs_pattern ',' INIT text= paren_chunk[null] ',' ACTION text= paren_chunk[null] ',' RESULT text= paren_chunk[null] loc= ')' ;
     public final AccumulateDescr accumulate_statement() throws RecognitionException {
         AccumulateDescr d = null;
 
@@ -2954,8 +2956,8 @@
         		d = factory.createAccumulate();
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:800:10: (loc= ACCUMULATE '(' pattern= lhs_pattern ',' INIT text= paren_chunk[null] ',' ACTION text= paren_chunk[null] ',' RESULT text= paren_chunk[null] loc= ')' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:800:10: loc= ACCUMULATE '(' pattern= lhs_pattern ',' INIT text= paren_chunk[null] ',' ACTION text= paren_chunk[null] ',' RESULT text= paren_chunk[null] loc= ')'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:800:10: (loc= ACCUMULATE '(' pattern= lhs_pattern ',' INIT text= paren_chunk[null] ',' ACTION text= paren_chunk[null] ',' RESULT text= paren_chunk[null] loc= ')' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:800:10: loc= ACCUMULATE '(' pattern= lhs_pattern ',' INIT text= paren_chunk[null] ',' ACTION text= paren_chunk[null] ',' RESULT text= paren_chunk[null] loc= ')'
             {
             loc=(Token)input.LT(1);
             match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_accumulate_statement2046); if (failed) return d;
@@ -2970,7 +2972,7 @@
             pattern=lhs_pattern();
             _fsp--;
             if (failed) return d;
-            match(input,66,FOLLOW_66_in_accumulate_statement2062); if (failed) return d;
+            match(input,68,FOLLOW_68_in_accumulate_statement2062); if (failed) return d;
             if ( backtracking==0 ) {
 
               		        d.setSourcePattern( (PatternDescr)pattern );
@@ -2981,7 +2983,7 @@
             text=paren_chunk(null);
             _fsp--;
             if (failed) return d;
-            match(input,66,FOLLOW_66_in_accumulate_statement2078); if (failed) return d;
+            match(input,68,FOLLOW_68_in_accumulate_statement2078); if (failed) return d;
             if ( backtracking==0 ) {
 
               		        d.setInitCode( text.substring(1, text.length()-1) );
@@ -2992,7 +2994,7 @@
             text=paren_chunk(null);
             _fsp--;
             if (failed) return d;
-            match(input,66,FOLLOW_66_in_accumulate_statement2094); if (failed) return d;
+            match(input,68,FOLLOW_68_in_accumulate_statement2094); if (failed) return d;
             if ( backtracking==0 ) {
 
               		        d.setActionCode( text.substring(1, text.length()-1) );
@@ -3027,7 +3029,7 @@
 
 
     // $ANTLR start collect_statement
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:824:1: collect_statement returns [CollectDescr d] : loc= COLLECT '(' pattern= lhs_pattern loc= ')' ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:824:1: collect_statement returns [CollectDescr d] : loc= COLLECT '(' pattern= lhs_pattern loc= ')' ;
     public final CollectDescr collect_statement() throws RecognitionException {
         CollectDescr d = null;
 
@@ -3039,8 +3041,8 @@
         		d = factory.createCollect();
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:829:10: (loc= COLLECT '(' pattern= lhs_pattern loc= ')' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:829:10: loc= COLLECT '(' pattern= lhs_pattern loc= ')'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:829:10: (loc= COLLECT '(' pattern= lhs_pattern loc= ')' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:829:10: loc= COLLECT '(' pattern= lhs_pattern loc= ')'
             {
             loc=(Token)input.LT(1);
             match(input,COLLECT,FOLLOW_COLLECT_in_collect_statement2155); if (failed) return d;
@@ -3079,7 +3081,7 @@
 
 
     // $ANTLR start fact_binding
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:1: fact_binding returns [BaseDescr d] : id= ID ':' fe= fact_expression[id.getText()] ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:1: fact_binding returns [BaseDescr d] : id= ID ':' fe= fact_expression[id.getText()] ;
     public final BaseDescr fact_binding() throws RecognitionException {
         BaseDescr d = null;
 
@@ -3092,12 +3094,12 @@
         		boolean multi=false;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:847:4: (id= ID ':' fe= fact_expression[id.getText()] )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:847:4: id= ID ':' fe= fact_expression[id.getText()]
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:847:4: (id= ID ':' fe= fact_expression[id.getText()] )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:847:4: id= ID ':' fe= fact_expression[id.getText()]
             {
             id=(Token)input.LT(1);
             match(input,ID,FOLLOW_ID_in_fact_binding2207); if (failed) return d;
-            match(input,65,FOLLOW_65_in_fact_binding2209); if (failed) return d;
+            match(input,67,FOLLOW_67_in_fact_binding2209); if (failed) return d;
             if ( backtracking==0 ) {
 
                		        // handling incomplete parsing
@@ -3134,7 +3136,7 @@
 
 
     // $ANTLR start fact_expression
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:863:2: fact_expression[String id] returns [BaseDescr pd] : ( '(' fe= fact_expression[id] ')' | f= fact ( ( OR | '||' ) f= fact )* );
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:863:2: fact_expression[String id] returns [BaseDescr pd] : ( '(' fe= fact_expression[id] ')' | f= fact ( ( OR | '||' ) f= fact )* );
     public final BaseDescr fact_expression(String id) throws RecognitionException {
         BaseDescr pd = null;
 
@@ -3148,7 +3150,7 @@
          		boolean multi = false;
          	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:868:5: ( '(' fe= fact_expression[id] ')' | f= fact ( ( OR | '||' ) f= fact )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:868:5: ( '(' fe= fact_expression[id] ')' | f= fact ( ( OR | '||' ) f= fact )* )
             int alt32=2;
             int LA32_0 = input.LA(1);
 
@@ -3167,7 +3169,7 @@
             }
             switch (alt32) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:868:5: '(' fe= fact_expression[id] ')'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:868:5: '(' fe= fact_expression[id] ')'
                     {
                     match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_expression2254); if (failed) return pd;
                     pushFollow(FOLLOW_fact_expression_in_fact_expression2258);
@@ -3182,7 +3184,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:869:6: f= fact ( ( OR | '||' ) f= fact )*
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:869:6: f= fact ( ( OR | '||' ) f= fact )*
                     {
                     pushFollow(FOLLOW_fact_in_fact_expression2272);
                     f=fact();
@@ -3194,13 +3196,13 @@
                        			pd = f;
                        		
                     }
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:4: ( ( OR | '||' ) f= fact )*
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:4: ( ( OR | '||' ) f= fact )*
                     loop31:
                     do {
                         int alt31=2;
                         int LA31_0 = input.LA(1);
 
-                        if ( (LA31_0==OR||LA31_0==69) ) {
+                        if ( (LA31_0==OR||LA31_0==71) ) {
                             int LA31_6 = input.LA(2);
 
                             if ( (synpred49()) ) {
@@ -3213,9 +3215,9 @@
 
                         switch (alt31) {
                     	case 1 :
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:6: ( OR | '||' ) f= fact
+                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:6: ( OR | '||' ) f= fact
                     	    {
-                    	    if ( input.LA(1)==OR||input.LA(1)==69 ) {
+                    	    if ( input.LA(1)==OR||input.LA(1)==71 ) {
                     	        input.consume();
                     	        errorRecovery=false;failed=false;
                     	    }
@@ -3272,7 +3274,7 @@
 
 
     // $ANTLR start fact
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:890:1: fact returns [BaseDescr d] : id= dotted_name[d] loc= LEFT_PAREN ( constraints[pattern] )? endLoc= RIGHT_PAREN ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:890:1: fact returns [BaseDescr d] : id= dotted_name[d] loc= LEFT_PAREN ( constraints[pattern] )? endLoc= RIGHT_PAREN ;
     public final BaseDescr fact() throws RecognitionException {
         BaseDescr d = null;
 
@@ -3286,8 +3288,8 @@
         		PatternDescr pattern = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:896:11: (id= dotted_name[d] loc= LEFT_PAREN ( constraints[pattern] )? endLoc= RIGHT_PAREN )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:896:11: id= dotted_name[d] loc= LEFT_PAREN ( constraints[pattern] )? endLoc= RIGHT_PAREN
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:896:11: (id= dotted_name[d] loc= LEFT_PAREN ( constraints[pattern] )? endLoc= RIGHT_PAREN )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:896:11: id= dotted_name[d] loc= LEFT_PAREN ( constraints[pattern] )? endLoc= RIGHT_PAREN
             {
             if ( backtracking==0 ) {
 
@@ -3313,16 +3315,16 @@
                			        pattern.setLeftParentCharacter( ((CommonToken)loc).getStartIndex() );
                			
             }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:909:4: ( constraints[pattern] )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:909:4: ( constraints[pattern] )?
             int alt33=2;
             int LA33_0 = input.LA(1);
 
-            if ( ((LA33_0>=ATTRIBUTES && LA33_0<=WHEN)||LA33_0==ENABLED||LA33_0==SALIENCE||LA33_0==DURATION||(LA33_0>=ACCUMULATE && LA33_0<=LEFT_PAREN)||(LA33_0>=CONTAINS && LA33_0<=EXCLUDES)||LA33_0==NULL||(LA33_0>=AND && LA33_0<=THEN)) ) {
+            if ( ((LA33_0>=ATTRIBUTES && LA33_0<=WHEN)||LA33_0==ENABLED||LA33_0==SALIENCE||LA33_0==DURATION||(LA33_0>=ACCUMULATE && LA33_0<=LEFT_PAREN)||(LA33_0>=CONTAINS && LA33_0<=MEMBEROF)||LA33_0==NULL||(LA33_0>=AND && LA33_0<=THEN)) ) {
                 alt33=1;
             }
             switch (alt33) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:909:6: constraints[pattern]
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:909:6: constraints[pattern]
                     {
                     pushFollow(FOLLOW_constraints_in_fact2387);
                     constraints(pattern);
@@ -3361,17 +3363,17 @@
 
 
     // $ANTLR start constraints
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:921:1: constraints[PatternDescr pattern] : ( constraint[pattern] | predicate[pattern] ) ( ',' ( constraint[pattern] | predicate[pattern] ) )* ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:921:1: constraints[PatternDescr pattern] : ( constraint[pattern] | predicate[pattern] ) ( ',' ( constraint[pattern] | predicate[pattern] ) )* ;
     public final void constraints(PatternDescr pattern) throws RecognitionException {
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:922:4: ( ( constraint[pattern] | predicate[pattern] ) ( ',' ( constraint[pattern] | predicate[pattern] ) )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:922:4: ( constraint[pattern] | predicate[pattern] ) ( ',' ( constraint[pattern] | predicate[pattern] ) )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:922:4: ( ( constraint[pattern] | predicate[pattern] ) ( ',' ( constraint[pattern] | predicate[pattern] ) )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:922:4: ( constraint[pattern] | predicate[pattern] ) ( ',' ( constraint[pattern] | predicate[pattern] ) )*
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:922:4: ( constraint[pattern] | predicate[pattern] )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:922:4: ( constraint[pattern] | predicate[pattern] )
             int alt34=2;
             int LA34_0 = input.LA(1);
 
-            if ( ((LA34_0>=ATTRIBUTES && LA34_0<=WHEN)||LA34_0==ENABLED||LA34_0==SALIENCE||LA34_0==DURATION||(LA34_0>=ACCUMULATE && LA34_0<=OR)||(LA34_0>=CONTAINS && LA34_0<=EXCLUDES)||LA34_0==NULL||(LA34_0>=AND && LA34_0<=THEN)) ) {
+            if ( ((LA34_0>=ATTRIBUTES && LA34_0<=WHEN)||LA34_0==ENABLED||LA34_0==SALIENCE||LA34_0==DURATION||(LA34_0>=ACCUMULATE && LA34_0<=OR)||(LA34_0>=CONTAINS && LA34_0<=MEMBEROF)||LA34_0==NULL||(LA34_0>=AND && LA34_0<=THEN)) ) {
                 alt34=1;
             }
             else if ( (LA34_0==LEFT_PAREN) ) {
@@ -3386,7 +3388,7 @@
             }
             switch (alt34) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:922:5: constraint[pattern]
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:922:5: constraint[pattern]
                     {
                     pushFollow(FOLLOW_constraint_in_constraints2421);
                     constraint(pattern);
@@ -3396,7 +3398,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:922:25: predicate[pattern]
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:922:25: predicate[pattern]
                     {
                     pushFollow(FOLLOW_predicate_in_constraints2424);
                     predicate(pattern);
@@ -3408,27 +3410,27 @@
 
             }
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:923:3: ( ',' ( constraint[pattern] | predicate[pattern] ) )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:923:3: ( ',' ( constraint[pattern] | predicate[pattern] ) )*
             loop36:
             do {
                 int alt36=2;
                 int LA36_0 = input.LA(1);
 
-                if ( (LA36_0==66) ) {
+                if ( (LA36_0==68) ) {
                     alt36=1;
                 }
 
 
                 switch (alt36) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:923:5: ',' ( constraint[pattern] | predicate[pattern] )
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:923:5: ',' ( constraint[pattern] | predicate[pattern] )
             	    {
-            	    match(input,66,FOLLOW_66_in_constraints2432); if (failed) return ;
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:923:9: ( constraint[pattern] | predicate[pattern] )
+            	    match(input,68,FOLLOW_68_in_constraints2432); if (failed) return ;
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:923:9: ( constraint[pattern] | predicate[pattern] )
             	    int alt35=2;
             	    int LA35_0 = input.LA(1);
 
-            	    if ( ((LA35_0>=ATTRIBUTES && LA35_0<=WHEN)||LA35_0==ENABLED||LA35_0==SALIENCE||LA35_0==DURATION||(LA35_0>=ACCUMULATE && LA35_0<=OR)||(LA35_0>=CONTAINS && LA35_0<=EXCLUDES)||LA35_0==NULL||(LA35_0>=AND && LA35_0<=THEN)) ) {
+            	    if ( ((LA35_0>=ATTRIBUTES && LA35_0<=WHEN)||LA35_0==ENABLED||LA35_0==SALIENCE||LA35_0==DURATION||(LA35_0>=ACCUMULATE && LA35_0<=OR)||(LA35_0>=CONTAINS && LA35_0<=MEMBEROF)||LA35_0==NULL||(LA35_0>=AND && LA35_0<=THEN)) ) {
             	        alt35=1;
             	    }
             	    else if ( (LA35_0==LEFT_PAREN) ) {
@@ -3443,7 +3445,7 @@
             	    }
             	    switch (alt35) {
             	        case 1 :
-            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:923:10: constraint[pattern]
+            	            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:923:10: constraint[pattern]
             	            {
             	            pushFollow(FOLLOW_constraint_in_constraints2435);
             	            constraint(pattern);
@@ -3453,7 +3455,7 @@
             	            }
             	            break;
             	        case 2 :
-            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:923:30: predicate[pattern]
+            	            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:923:30: predicate[pattern]
             	            {
             	            pushFollow(FOLLOW_predicate_in_constraints2438);
             	            predicate(pattern);
@@ -3490,7 +3492,7 @@
 
 
     // $ANTLR start constraint
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:926:1: constraint[PatternDescr pattern] : (fb= ID ':' )? f= identifier ( (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* ) | '->' predicate[pattern] )? ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:926:1: constraint[PatternDescr pattern] : (fb= ID ':' )? f= identifier ( (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* ) | '->' predicate[pattern] )? ;
     public final void constraint(PatternDescr pattern) throws RecognitionException {
         Token fb=null;
         Token con=null;
@@ -3504,27 +3506,27 @@
         		FieldConstraintDescr fc = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:3: ( (fb= ID ':' )? f= identifier ( (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* ) | '->' predicate[pattern] )? )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:3: (fb= ID ':' )? f= identifier ( (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* ) | '->' predicate[pattern] )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:3: ( (fb= ID ':' )? f= identifier ( (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* ) | '->' predicate[pattern] )? )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:3: (fb= ID ':' )? f= identifier ( (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* ) | '->' predicate[pattern] )?
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:3: (fb= ID ':' )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:3: (fb= ID ':' )?
             int alt37=2;
             int LA37_0 = input.LA(1);
 
             if ( (LA37_0==ID) ) {
                 int LA37_1 = input.LA(2);
 
-                if ( (LA37_1==65) ) {
+                if ( (LA37_1==67) ) {
                     alt37=1;
                 }
             }
             switch (alt37) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:5: fb= ID ':'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:5: fb= ID ':'
                     {
                     fb=(Token)input.LT(1);
                     match(input,ID,FOLLOW_ID_in_constraint2467); if (failed) return ;
-                    match(input,65,FOLLOW_65_in_constraint2469); if (failed) return ;
+                    match(input,67,FOLLOW_67_in_constraint2469); if (failed) return ;
                     if ( backtracking==0 ) {
                        
                       			fbd = new FieldBindingDescr();
@@ -3564,22 +3566,22 @@
               		    }
               		
             }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:960:3: ( (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* ) | '->' predicate[pattern] )?
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:960:3: ( (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* ) | '->' predicate[pattern] )?
             int alt39=3;
             int LA39_0 = input.LA(1);
 
-            if ( ((LA39_0>=CONTAINS && LA39_0<=EXCLUDES)||(LA39_0>=73 && LA39_0<=78)) ) {
+            if ( ((LA39_0>=CONTAINS && LA39_0<=NOT_MEMBEROF)||(LA39_0>=75 && LA39_0<=80)) ) {
                 alt39=1;
             }
-            else if ( (LA39_0==72) ) {
+            else if ( (LA39_0==74) ) {
                 alt39=2;
             }
             switch (alt39) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:961:4: (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:961:4: (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:961:4: (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:961:6: rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )*
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:961:4: (rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )* )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:961:6: rd= constraint_expression (con= ( '&' | '|' ) rd= constraint_expression )*
                     {
                     pushFollow(FOLLOW_constraint_expression_in_constraint2508);
                     rd=constraint_expression();
@@ -3594,23 +3596,23 @@
                       					}
                       				
                     }
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:969:5: (con= ( '&' | '|' ) rd= constraint_expression )*
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:969:5: (con= ( '&' | '|' ) rd= constraint_expression )*
                     loop38:
                     do {
                         int alt38=2;
                         int LA38_0 = input.LA(1);
 
-                        if ( ((LA38_0>=70 && LA38_0<=71)) ) {
+                        if ( ((LA38_0>=72 && LA38_0<=73)) ) {
                             alt38=1;
                         }
 
 
                         switch (alt38) {
                     	case 1 :
-                    	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:970:6: con= ( '&' | '|' ) rd= constraint_expression
+                    	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:970:6: con= ( '&' | '|' ) rd= constraint_expression
                     	    {
                     	    con=(Token)input.LT(1);
-                    	    if ( (input.LA(1)>=70 && input.LA(1)<=71) ) {
+                    	    if ( (input.LA(1)>=72 && input.LA(1)<=73) ) {
                     	        input.consume();
                     	        errorRecovery=false;failed=false;
                     	    }
@@ -3657,9 +3659,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:987:4: '->' predicate[pattern]
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:987:4: '->' predicate[pattern]
                     {
-                    match(input,72,FOLLOW_72_in_constraint2577); if (failed) return ;
+                    match(input,74,FOLLOW_74_in_constraint2577); if (failed) return ;
                     pushFollow(FOLLOW_predicate_in_constraint2579);
                     predicate(pattern);
                     _fsp--;
@@ -3686,7 +3688,7 @@
 
 
     // $ANTLR start constraint_expression
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:991:1: constraint_expression returns [RestrictionDescr rd] : op= ( '==' | '>' | '>=' | '<' | '<=' | '!=' | CONTAINS | MATCHES | EXCLUDES ) (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:991:1: constraint_expression returns [RestrictionDescr rd] : op= ( '==' | '>' | '>=' | '<' | '<=' | '!=' | CONTAINS | MATCHES | EXCLUDES | MEMBEROF | NOT_MEMBEROF ) (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) ;
     public final RestrictionDescr constraint_expression() throws RecognitionException {
         RestrictionDescr rd = null;
 
@@ -3698,11 +3700,11 @@
 
 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:993:3: (op= ( '==' | '>' | '>=' | '<' | '<=' | '!=' | CONTAINS | MATCHES | EXCLUDES ) (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:993:3: op= ( '==' | '>' | '>=' | '<' | '<=' | '!=' | CONTAINS | MATCHES | EXCLUDES ) (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:993:3: (op= ( '==' | '>' | '>=' | '<' | '<=' | '!=' | CONTAINS | MATCHES | EXCLUDES | MEMBEROF | NOT_MEMBEROF ) (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:993:3: op= ( '==' | '>' | '>=' | '<' | '<=' | '!=' | CONTAINS | MATCHES | EXCLUDES | MEMBEROF | NOT_MEMBEROF ) (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
             {
             op=(Token)input.LT(1);
-            if ( (input.LA(1)>=CONTAINS && input.LA(1)<=EXCLUDES)||(input.LA(1)>=73 && input.LA(1)<=78) ) {
+            if ( (input.LA(1)>=CONTAINS && input.LA(1)<=NOT_MEMBEROF)||(input.LA(1)>=75 && input.LA(1)<=80) ) {
                 input.consume();
                 errorRecovery=false;failed=false;
             }
@@ -3713,23 +3715,23 @@
                 recoverFromMismatchedSet(input,mse,FOLLOW_set_in_constraint_expression2614);    throw mse;
             }
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1003:3: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1005:3: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )
             int alt40=4;
             switch ( input.LA(1) ) {
             case ID:
                 {
                 int LA40_1 = input.LA(2);
 
-                if ( (LA40_1==67) ) {
+                if ( (LA40_1==EOF||LA40_1==RIGHT_PAREN||LA40_1==68||(LA40_1>=72 && LA40_1<=73)) ) {
+                    alt40=1;
+                }
+                else if ( (LA40_1==69) ) {
                     alt40=2;
                 }
-                else if ( (LA40_1==EOF||LA40_1==RIGHT_PAREN||LA40_1==66||(LA40_1>=70 && LA40_1<=71)) ) {
-                    alt40=1;
-                }
                 else {
                     if (backtracking>0) {failed=true; return rd;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1003:3: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 40, 1, input);
+                        new NoViableAltException("1005:3: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 40, 1, input);
 
                     throw nvae;
                 }
@@ -3752,17 +3754,17 @@
             default:
                 if (backtracking>0) {failed=true; return rd;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1003:3: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 40, 0, input);
+                    new NoViableAltException("1005:3: (bvc= ID | lc= enum_constraint | lc= literal_constraint | rvc= retval_constraint )", 40, 0, input);
 
                 throw nvae;
             }
 
             switch (alt40) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1003:5: bvc= ID
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1005:5: bvc= ID
                     {
                     bvc=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_constraint_expression2683); if (failed) return rd;
+                    match(input,ID,FOLLOW_ID_in_constraint_expression2689); if (failed) return rd;
                     if ( backtracking==0 ) {
 
                       				rd = new VariableRestrictionDescr(op.getText(), bvc.getText());
@@ -3772,9 +3774,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1008:4: lc= enum_constraint
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1010:4: lc= enum_constraint
                     {
-                    pushFollow(FOLLOW_enum_constraint_in_constraint_expression2699);
+                    pushFollow(FOLLOW_enum_constraint_in_constraint_expression2705);
                     lc=enum_constraint();
                     _fsp--;
                     if (failed) return rd;
@@ -3787,9 +3789,9 @@
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1013:4: lc= literal_constraint
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1015:4: lc= literal_constraint
                     {
-                    pushFollow(FOLLOW_literal_constraint_in_constraint_expression2722);
+                    pushFollow(FOLLOW_literal_constraint_in_constraint_expression2728);
                     lc=literal_constraint();
                     _fsp--;
                     if (failed) return rd;
@@ -3802,9 +3804,9 @@
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1017:5: rvc= retval_constraint
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1019:5: rvc= retval_constraint
                     {
-                    pushFollow(FOLLOW_retval_constraint_in_constraint_expression2736);
+                    pushFollow(FOLLOW_retval_constraint_in_constraint_expression2742);
                     rvc=retval_constraint();
                     _fsp--;
                     if (failed) return rd;
@@ -3835,7 +3837,7 @@
 
 
     // $ANTLR start literal_constraint
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1024:1: literal_constraint returns [String text] : (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:1026:1: literal_constraint returns [String text] : (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL ) ;
     public final String literal_constraint() throws RecognitionException {
         String text = null;
 
@@ -3845,10 +3847,10 @@
         		text = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1028:4: ( (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1028: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:1030: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:1030:4: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL )
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1028: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:1030:4: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL )
             int alt41=5;
             switch ( input.LA(1) ) {
             case STRING:
@@ -3879,17 +3881,17 @@
             default:
                 if (backtracking>0) {failed=true; return text;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1028:4: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL )", 41, 0, input);
+                    new NoViableAltException("1030:4: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL )", 41, 0, input);
 
                 throw nvae;
             }
 
             switch (alt41) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1028:6: t= STRING
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1030:6: t= STRING
                     {
                     t=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_literal_constraint2775); if (failed) return text;
+                    match(input,STRING,FOLLOW_STRING_in_literal_constraint2781); if (failed) return text;
                     if ( backtracking==0 ) {
                        text = getString( t ); 
                     }
@@ -3897,10 +3899,10 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1029:5: t= INT
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1031:5: t= INT
                     {
                     t=(Token)input.LT(1);
-                    match(input,INT,FOLLOW_INT_in_literal_constraint2786); if (failed) return text;
+                    match(input,INT,FOLLOW_INT_in_literal_constraint2792); if (failed) return text;
                     if ( backtracking==0 ) {
                        text = t.getText(); 
                     }
@@ -3908,10 +3910,10 @@
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1030:5: t= FLOAT
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1032:5: t= FLOAT
                     {
                     t=(Token)input.LT(1);
-                    match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint2799); if (failed) return text;
+                    match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint2805); if (failed) return text;
                     if ( backtracking==0 ) {
                        text = t.getText(); 
                     }
@@ -3919,10 +3921,10 @@
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1031:5: t= BOOL
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1033:5: t= BOOL
                     {
                     t=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_literal_constraint2810); if (failed) return text;
+                    match(input,BOOL,FOLLOW_BOOL_in_literal_constraint2816); if (failed) return text;
                     if ( backtracking==0 ) {
                        text = t.getText(); 
                     }
@@ -3930,10 +3932,10 @@
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1032:5: t= NULL
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:5: t= NULL
                     {
                     t=(Token)input.LT(1);
-                    match(input,NULL,FOLLOW_NULL_in_literal_constraint2822); if (failed) return text;
+                    match(input,NULL,FOLLOW_NULL_in_literal_constraint2828); if (failed) return text;
                     if ( backtracking==0 ) {
                        text = null; 
                     }
@@ -3959,7 +3961,7 @@
 
 
     // $ANTLR start enum_constraint
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1036:1: enum_constraint returns [String text] : id= ID ( '.' ident= identifier )+ ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1038:1: enum_constraint returns [String text] : id= ID ( '.' ident= identifier )+ ;
     public final String enum_constraint() throws RecognitionException {
         String text = null;
 
@@ -3971,32 +3973,32 @@
         		text = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1041:3: (id= ID ( '.' ident= identifier )+ )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1041:3: id= ID ( '.' ident= identifier )+
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1043:3: (id= ID ( '.' ident= identifier )+ )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1043:3: id= ID ( '.' ident= identifier )+
             {
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_enum_constraint2857); if (failed) return text;
+            match(input,ID,FOLLOW_ID_in_enum_constraint2863); if (failed) return text;
             if ( backtracking==0 ) {
                text=id.getText(); 
             }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1041:32: ( '.' ident= identifier )+
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1043:32: ( '.' ident= identifier )+
             int cnt42=0;
             loop42:
             do {
                 int alt42=2;
                 int LA42_0 = input.LA(1);
 
-                if ( (LA42_0==67) ) {
+                if ( (LA42_0==69) ) {
                     alt42=1;
                 }
 
 
                 switch (alt42) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1041:34: '.' ident= identifier
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1043:34: '.' ident= identifier
             	    {
-            	    match(input,67,FOLLOW_67_in_enum_constraint2863); if (failed) return text;
-            	    pushFollow(FOLLOW_identifier_in_enum_constraint2867);
+            	    match(input,69,FOLLOW_69_in_enum_constraint2869); if (failed) return text;
+            	    pushFollow(FOLLOW_identifier_in_enum_constraint2873);
             	    ident=identifier();
             	    _fsp--;
             	    if (failed) return text;
@@ -4033,7 +4035,7 @@
 
 
     // $ANTLR start predicate
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1045:1: predicate[PatternDescr pattern] : text= paren_chunk[d] ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1047:1: predicate[PatternDescr pattern] : text= paren_chunk[d] ;
     public final void predicate(PatternDescr pattern) throws RecognitionException {
         String text = null;
 
@@ -4042,15 +4044,15 @@
         		PredicateDescr d = null;
                 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1050:3: (text= paren_chunk[d] )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1050:3: text= paren_chunk[d]
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1052:3: (text= paren_chunk[d] )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1052:3: text= paren_chunk[d]
             {
             if ( backtracking==0 ) {
 
               			d = new PredicateDescr( );
               		
             }
-            pushFollow(FOLLOW_paren_chunk_in_predicate2909);
+            pushFollow(FOLLOW_paren_chunk_in_predicate2915);
             text=paren_chunk(d);
             _fsp--;
             if (failed) return ;
@@ -4079,7 +4081,7 @@
 
 
     // $ANTLR start paren_chunk
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1063:1: paren_chunk[BaseDescr descr] returns [String text] : loc= LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | chunk= paren_chunk[null] )* loc= RIGHT_PAREN ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1065:1: paren_chunk[BaseDescr descr] returns [String text] : loc= LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | chunk= paren_chunk[null] )* loc= RIGHT_PAREN ;
     public final String paren_chunk(BaseDescr descr) throws RecognitionException {
         String text = null;
 
@@ -4092,8 +4094,8 @@
                    Integer channel = null;
                 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1069:10: (loc= LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | chunk= paren_chunk[null] )* loc= RIGHT_PAREN )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1069:10: loc= LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | chunk= paren_chunk[null] )* loc= RIGHT_PAREN
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1071:10: (loc= LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | chunk= paren_chunk[null] )* loc= RIGHT_PAREN )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1071:10: loc= LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | chunk= paren_chunk[null] )* loc= RIGHT_PAREN
             {
             if ( backtracking==0 ) {
 
@@ -4103,20 +4105,20 @@
               	        
             }
             loc=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk2958); if (failed) return text;
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk2964); if (failed) return text;
             if ( backtracking==0 ) {
 
               		    buf.append( loc.getText());
                
               		
             }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1079:3: (~ ( LEFT_PAREN | RIGHT_PAREN ) | chunk= paren_chunk[null] )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1081:3: (~ ( LEFT_PAREN | RIGHT_PAREN ) | chunk= paren_chunk[null] )*
             loop43:
             do {
                 int alt43=3;
                 int LA43_0 = input.LA(1);
 
-                if ( ((LA43_0>=ATTRIBUTES && LA43_0<=OR)||(LA43_0>=CONTAINS && LA43_0<=79)) ) {
+                if ( ((LA43_0>=ATTRIBUTES && LA43_0<=OR)||(LA43_0>=CONTAINS && LA43_0<=81)) ) {
                     alt43=1;
                 }
                 else if ( (LA43_0==LEFT_PAREN) ) {
@@ -4126,9 +4128,9 @@
 
                 switch (alt43) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1080:4: ~ ( LEFT_PAREN | RIGHT_PAREN )
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1082:4: ~ ( LEFT_PAREN | RIGHT_PAREN )
             	    {
-            	    if ( (input.LA(1)>=ATTRIBUTES && input.LA(1)<=OR)||(input.LA(1)>=CONTAINS && input.LA(1)<=79) ) {
+            	    if ( (input.LA(1)>=ATTRIBUTES && input.LA(1)<=OR)||(input.LA(1)>=CONTAINS && input.LA(1)<=81) ) {
             	        input.consume();
             	        errorRecovery=false;failed=false;
             	    }
@@ -4136,7 +4138,7 @@
             	        if (backtracking>0) {failed=true; return text;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_paren_chunk2974);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_paren_chunk2980);    throw mse;
             	    }
 
             	    if ( backtracking==0 ) {
@@ -4148,9 +4150,9 @@
             	    }
             	    break;
             	case 2 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1085:4: chunk= paren_chunk[null]
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1087:4: chunk= paren_chunk[null]
             	    {
-            	    pushFollow(FOLLOW_paren_chunk_in_paren_chunk2998);
+            	    pushFollow(FOLLOW_paren_chunk_in_paren_chunk3004);
             	    chunk=paren_chunk(null);
             	    _fsp--;
             	    if (failed) return text;
@@ -4178,7 +4180,7 @@
               		
             }
             loc=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk3035); if (failed) return text;
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk3041); if (failed) return text;
             if ( backtracking==0 ) {
 
                                   buf.append( loc.getText() );
@@ -4204,7 +4206,7 @@
 
 
     // $ANTLR start curly_chunk
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1107:1: curly_chunk[BaseDescr descr] returns [String text] : loc= LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | chunk= curly_chunk[descr] )* loc= RIGHT_CURLY ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1109:1: curly_chunk[BaseDescr descr] returns [String text] : loc= LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | chunk= curly_chunk[descr] )* loc= RIGHT_CURLY ;
     public final String curly_chunk(BaseDescr descr) throws RecognitionException {
         String text = null;
 
@@ -4217,11 +4219,11 @@
                    Integer channel = null;
                 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1113:3: (loc= LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | chunk= curly_chunk[descr] )* loc= RIGHT_CURLY )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1113:3: loc= LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | chunk= curly_chunk[descr] )* loc= RIGHT_CURLY
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1115:3: (loc= LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | chunk= curly_chunk[descr] )* loc= RIGHT_CURLY )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1115:3: loc= LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | chunk= curly_chunk[descr] )* loc= RIGHT_CURLY
             {
             loc=(Token)input.LT(1);
-            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk3086); if (failed) return text;
+            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk3092); if (failed) return text;
             if ( backtracking==0 ) {
 
               	            channel = ((SwitchingCommonTokenStream)input).getTokenTypeChannel( WS ); 
@@ -4231,13 +4233,13 @@
               		    buf.append( loc.getText() );
               		
             }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1121:3: (~ ( LEFT_CURLY | RIGHT_CURLY ) | chunk= curly_chunk[descr] )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1123:3: (~ ( LEFT_CURLY | RIGHT_CURLY ) | chunk= curly_chunk[descr] )*
             loop44:
             do {
                 int alt44=3;
                 int LA44_0 = input.LA(1);
 
-                if ( ((LA44_0>=ATTRIBUTES && LA44_0<=NULL)||(LA44_0>=LEFT_SQUARE && LA44_0<=79)) ) {
+                if ( ((LA44_0>=ATTRIBUTES && LA44_0<=NULL)||(LA44_0>=LEFT_SQUARE && LA44_0<=81)) ) {
                     alt44=1;
                 }
                 else if ( (LA44_0==LEFT_CURLY) ) {
@@ -4247,9 +4249,9 @@
 
                 switch (alt44) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1122:4: ~ ( LEFT_CURLY | RIGHT_CURLY )
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1124:4: ~ ( LEFT_CURLY | RIGHT_CURLY )
             	    {
-            	    if ( (input.LA(1)>=ATTRIBUTES && input.LA(1)<=NULL)||(input.LA(1)>=LEFT_SQUARE && input.LA(1)<=79) ) {
+            	    if ( (input.LA(1)>=ATTRIBUTES && input.LA(1)<=NULL)||(input.LA(1)>=LEFT_SQUARE && input.LA(1)<=81) ) {
             	        input.consume();
             	        errorRecovery=false;failed=false;
             	    }
@@ -4257,7 +4259,7 @@
             	        if (backtracking>0) {failed=true; return text;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_curly_chunk3102);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_curly_chunk3108);    throw mse;
             	    }
 
             	    if ( backtracking==0 ) {
@@ -4269,9 +4271,9 @@
             	    }
             	    break;
             	case 2 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1127:4: chunk= curly_chunk[descr]
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1129:4: chunk= curly_chunk[descr]
             	    {
-            	    pushFollow(FOLLOW_curly_chunk_in_curly_chunk3126);
+            	    pushFollow(FOLLOW_curly_chunk_in_curly_chunk3132);
             	    chunk=curly_chunk(descr);
             	    _fsp--;
             	    if (failed) return text;
@@ -4299,7 +4301,7 @@
               		
             }
             loc=(Token)input.LT(1);
-            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk3163); if (failed) return text;
+            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk3169); if (failed) return text;
             if ( backtracking==0 ) {
 
                                   buf.append( loc.getText() );
@@ -4325,7 +4327,7 @@
 
 
     // $ANTLR start square_chunk
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1149:1: square_chunk[BaseDescr descr] returns [String text] : loc= LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | chunk= square_chunk[null] )* loc= RIGHT_SQUARE ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1151:1: square_chunk[BaseDescr descr] returns [String text] : loc= LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | chunk= square_chunk[null] )* loc= RIGHT_SQUARE ;
     public final String square_chunk(BaseDescr descr) throws RecognitionException {
         String text = null;
 
@@ -4338,8 +4340,8 @@
                    Integer channel = null;
                 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1155:10: (loc= LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | chunk= square_chunk[null] )* loc= RIGHT_SQUARE )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1155:10: loc= LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | chunk= square_chunk[null] )* loc= RIGHT_SQUARE
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1157:10: (loc= LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | chunk= square_chunk[null] )* loc= RIGHT_SQUARE )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1157:10: loc= LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | chunk= square_chunk[null] )* loc= RIGHT_SQUARE
             {
             if ( backtracking==0 ) {
 
@@ -4349,20 +4351,20 @@
               	        
             }
             loc=(Token)input.LT(1);
-            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk3226); if (failed) return text;
+            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk3232); if (failed) return text;
             if ( backtracking==0 ) {
 
               		    buf.append( loc.getText());
                
               		
             }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1165:3: (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | chunk= square_chunk[null] )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1167:3: (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | chunk= square_chunk[null] )*
             loop45:
             do {
                 int alt45=3;
                 int LA45_0 = input.LA(1);
 
-                if ( ((LA45_0>=ATTRIBUTES && LA45_0<=RIGHT_CURLY)||(LA45_0>=AND && LA45_0<=79)) ) {
+                if ( ((LA45_0>=ATTRIBUTES && LA45_0<=RIGHT_CURLY)||(LA45_0>=AND && LA45_0<=81)) ) {
                     alt45=1;
                 }
                 else if ( (LA45_0==LEFT_SQUARE) ) {
@@ -4372,9 +4374,9 @@
 
                 switch (alt45) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1166:4: ~ ( LEFT_SQUARE | RIGHT_SQUARE )
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1168:4: ~ ( LEFT_SQUARE | RIGHT_SQUARE )
             	    {
-            	    if ( (input.LA(1)>=ATTRIBUTES && input.LA(1)<=RIGHT_CURLY)||(input.LA(1)>=AND && input.LA(1)<=79) ) {
+            	    if ( (input.LA(1)>=ATTRIBUTES && input.LA(1)<=RIGHT_CURLY)||(input.LA(1)>=AND && input.LA(1)<=81) ) {
             	        input.consume();
             	        errorRecovery=false;failed=false;
             	    }
@@ -4382,7 +4384,7 @@
             	        if (backtracking>0) {failed=true; return text;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_square_chunk3242);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_square_chunk3248);    throw mse;
             	    }
 
             	    if ( backtracking==0 ) {
@@ -4394,9 +4396,9 @@
             	    }
             	    break;
             	case 2 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1171:4: chunk= square_chunk[null]
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1173:4: chunk= square_chunk[null]
             	    {
-            	    pushFollow(FOLLOW_square_chunk_in_square_chunk3266);
+            	    pushFollow(FOLLOW_square_chunk_in_square_chunk3272);
             	    chunk=square_chunk(null);
             	    _fsp--;
             	    if (failed) return text;
@@ -4424,7 +4426,7 @@
               		
             }
             loc=(Token)input.LT(1);
-            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk3303); if (failed) return text;
+            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk3309); if (failed) return text;
             if ( backtracking==0 ) {
 
                                   buf.append( loc.getText() );
@@ -4450,7 +4452,7 @@
 
 
     // $ANTLR start retval_constraint
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1193:1: retval_constraint returns [String text] : c= paren_chunk[null] ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1195:1: retval_constraint returns [String text] : c= paren_chunk[null] ;
     public final String retval_constraint() throws RecognitionException {
         String text = null;
 
@@ -4461,10 +4463,10 @@
         		text = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1198:3: (c= paren_chunk[null] )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1198:3: c= paren_chunk[null]
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1200:3: (c= paren_chunk[null] )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1200:3: c= paren_chunk[null]
             {
-            pushFollow(FOLLOW_paren_chunk_in_retval_constraint3348);
+            pushFollow(FOLLOW_paren_chunk_in_retval_constraint3354);
             c=paren_chunk(null);
             _fsp--;
             if (failed) return text;
@@ -4487,7 +4489,7 @@
 
 
     // $ANTLR start lhs_or
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1201:1: lhs_or returns [BaseDescr d] : left= lhs_and ( ( OR | '||' ) right= lhs_and )* ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1203:1: lhs_or returns [BaseDescr d] : left= lhs_and ( ( OR | '||' ) right= lhs_and )* ;
     public final BaseDescr lhs_or() throws RecognitionException {
         BaseDescr d = null;
 
@@ -4501,32 +4503,32 @@
         		OrDescr or = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1207:3: (left= lhs_and ( ( OR | '||' ) right= lhs_and )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1207:3: left= lhs_and ( ( OR | '||' ) right= lhs_and )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1209:3: (left= lhs_and ( ( OR | '||' ) right= lhs_and )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1209:3: left= lhs_and ( ( OR | '||' ) right= lhs_and )*
             {
-            pushFollow(FOLLOW_lhs_and_in_lhs_or3376);
+            pushFollow(FOLLOW_lhs_and_in_lhs_or3382);
             left=lhs_and();
             _fsp--;
             if (failed) return d;
             if ( backtracking==0 ) {
               d = left; 
             }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1208:3: ( ( OR | '||' ) right= lhs_and )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1210:3: ( ( OR | '||' ) right= lhs_and )*
             loop46:
             do {
                 int alt46=2;
                 int LA46_0 = input.LA(1);
 
-                if ( (LA46_0==OR||LA46_0==69) ) {
+                if ( (LA46_0==OR||LA46_0==71) ) {
                     alt46=1;
                 }
 
 
                 switch (alt46) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1208:5: ( OR | '||' ) right= lhs_and
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1210:5: ( OR | '||' ) right= lhs_and
             	    {
-            	    if ( input.LA(1)==OR||input.LA(1)==69 ) {
+            	    if ( input.LA(1)==OR||input.LA(1)==71 ) {
             	        input.consume();
             	        errorRecovery=false;failed=false;
             	    }
@@ -4534,10 +4536,10 @@
             	        if (backtracking>0) {failed=true; return d;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_or3384);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_or3390);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_lhs_and_in_lhs_or3395);
+            	    pushFollow(FOLLOW_lhs_and_in_lhs_or3401);
             	    right=lhs_and();
             	    _fsp--;
             	    if (failed) return d;
@@ -4577,7 +4579,7 @@
 
 
     // $ANTLR start lhs_and
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1222:1: lhs_and returns [BaseDescr d] : left= lhs_unary ( ( AND | '&&' ) right= lhs_unary )* ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1224:1: lhs_and returns [BaseDescr d] : left= lhs_unary ( ( AND | '&&' ) right= lhs_unary )* ;
     public final BaseDescr lhs_and() throws RecognitionException {
         BaseDescr d = null;
 
@@ -4591,32 +4593,32 @@
         		AndDescr and = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1228:3: (left= lhs_unary ( ( AND | '&&' ) right= lhs_unary )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1228:3: left= lhs_unary ( ( AND | '&&' ) right= lhs_unary )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1230:3: (left= lhs_unary ( ( AND | '&&' ) right= lhs_unary )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1230:3: left= lhs_unary ( ( AND | '&&' ) right= lhs_unary )*
             {
-            pushFollow(FOLLOW_lhs_unary_in_lhs_and3431);
+            pushFollow(FOLLOW_lhs_unary_in_lhs_and3437);
             left=lhs_unary();
             _fsp--;
             if (failed) return d;
             if ( backtracking==0 ) {
                d = left; 
             }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1229:3: ( ( AND | '&&' ) right= lhs_unary )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1231:3: ( ( AND | '&&' ) right= lhs_unary )*
             loop47:
             do {
                 int alt47=2;
                 int LA47_0 = input.LA(1);
 
-                if ( (LA47_0==AND||LA47_0==79) ) {
+                if ( (LA47_0==AND||LA47_0==81) ) {
                     alt47=1;
                 }
 
 
                 switch (alt47) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1229:5: ( AND | '&&' ) right= lhs_unary
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1231:5: ( AND | '&&' ) right= lhs_unary
             	    {
-            	    if ( input.LA(1)==AND||input.LA(1)==79 ) {
+            	    if ( input.LA(1)==AND||input.LA(1)==81 ) {
             	        input.consume();
             	        errorRecovery=false;failed=false;
             	    }
@@ -4624,10 +4626,10 @@
             	        if (backtracking>0) {failed=true; return d;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_and3439);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_and3445);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_lhs_unary_in_lhs_and3450);
+            	    pushFollow(FOLLOW_lhs_unary_in_lhs_and3456);
             	    right=lhs_unary();
             	    _fsp--;
             	    if (failed) return d;
@@ -4667,7 +4669,7 @@
 
 
     // $ANTLR start lhs_unary
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1243:1: lhs_unary returns [BaseDescr d] : (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )? | u= lhs_forall | '(' u= lhs_or ')' ) opt_semicolon ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1245:1: lhs_unary returns [BaseDescr d] : (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )? | u= lhs_forall | '(' u= lhs_or ')' ) opt_semicolon ;
     public final BaseDescr lhs_unary() throws RecognitionException {
         BaseDescr d = null;
 
@@ -4684,10 +4686,10 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1247:4: ( (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )? | u= lhs_forall | '(' u= lhs_or ')' ) opt_semicolon )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1247:4: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )? | u= lhs_forall | '(' u= lhs_or ')' ) opt_semicolon
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1249:4: ( (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )? | u= lhs_forall | '(' u= lhs_or ')' ) opt_semicolon )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1249:4: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )? | u= lhs_forall | '(' u= lhs_or ')' ) opt_semicolon
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1247:4: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )? | u= lhs_forall | '(' u= lhs_or ')' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1249:4: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )? | u= lhs_forall | '(' u= lhs_or ')' )
             int alt50=6;
             switch ( input.LA(1) ) {
             case EXISTS:
@@ -4723,16 +4725,16 @@
             default:
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1247:4: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )? | u= lhs_forall | '(' u= lhs_or ')' )", 50, 0, input);
+                    new NoViableAltException("1249:4: (u= lhs_exist | u= lhs_not | u= lhs_eval | u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )? | u= lhs_forall | '(' u= lhs_or ')' )", 50, 0, input);
 
                 throw nvae;
             }
 
             switch (alt50) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1247:6: u= lhs_exist
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1249:6: u= lhs_exist
                     {
-                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary3487);
+                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary3493);
                     u=lhs_exist();
                     _fsp--;
                     if (failed) return d;
@@ -4740,9 +4742,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1248:5: u= lhs_not
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1250:5: u= lhs_not
                     {
-                    pushFollow(FOLLOW_lhs_not_in_lhs_unary3495);
+                    pushFollow(FOLLOW_lhs_not_in_lhs_unary3501);
                     u=lhs_not();
                     _fsp--;
                     if (failed) return d;
@@ -4750,9 +4752,9 @@
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1249:5: u= lhs_eval
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1251:5: u= lhs_eval
                     {
-                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary3503);
+                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary3509);
                     u=lhs_eval();
                     _fsp--;
                     if (failed) return d;
@@ -4760,13 +4762,13 @@
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1250:5: u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )?
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1252:5: u= lhs_pattern ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )?
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_unary3511);
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_unary3517);
                     u=lhs_pattern();
                     _fsp--;
                     if (failed) return d;
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1250:19: ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )?
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1252:19: ( FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) ) )?
                     int alt49=2;
                     int LA49_0 = input.LA(1);
 
@@ -4775,65 +4777,65 @@
                     }
                     switch (alt49) {
                         case 1 :
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1251:13: FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) )
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1253:13: FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) )
                             {
-                            match(input,FROM,FOLLOW_FROM_in_lhs_unary3527); if (failed) return d;
-                            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1251:18: ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) )
+                            match(input,FROM,FOLLOW_FROM_in_lhs_unary3533); if (failed) return d;
+                            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1253:18: ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) )
                             int alt48=3;
                             int LA48_0 = input.LA(1);
 
-                            if ( (LA48_0==ACCUMULATE) && ((synpred94()||synpred91()))) {
+                            if ( (LA48_0==ACCUMULATE) && ((synpred96()||synpred93()))) {
                                 int LA48_1 = input.LA(2);
 
-                                if ( (synpred91()) ) {
+                                if ( (synpred93()) ) {
                                     alt48=1;
                                 }
-                                else if ( (synpred94()) ) {
+                                else if ( (synpred96()) ) {
                                     alt48=3;
                                 }
                                 else {
                                     if (backtracking>0) {failed=true; return d;}
                                     NoViableAltException nvae =
-                                        new NoViableAltException("1251:18: ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) )", 48, 1, input);
+                                        new NoViableAltException("1253:18: ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) )", 48, 1, input);
 
                                     throw nvae;
                                 }
                             }
-                            else if ( (LA48_0==COLLECT) && ((synpred92()||synpred94()))) {
+                            else if ( (LA48_0==COLLECT) && ((synpred96()||synpred94()))) {
                                 int LA48_2 = input.LA(2);
 
-                                if ( (synpred92()) ) {
+                                if ( (synpred94()) ) {
                                     alt48=2;
                                 }
-                                else if ( (synpred94()) ) {
+                                else if ( (synpred96()) ) {
                                     alt48=3;
                                 }
                                 else {
                                     if (backtracking>0) {failed=true; return d;}
                                     NoViableAltException nvae =
-                                        new NoViableAltException("1251:18: ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) )", 48, 2, input);
+                                        new NoViableAltException("1253:18: ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) )", 48, 2, input);
 
                                     throw nvae;
                                 }
                             }
-                            else if ( ((LA48_0>=ATTRIBUTES && LA48_0<=WHEN)||LA48_0==ENABLED||LA48_0==SALIENCE||LA48_0==DURATION||(LA48_0>=INIT && LA48_0<=RESULT)||(LA48_0>=ID && LA48_0<=OR)||(LA48_0>=CONTAINS && LA48_0<=EXCLUDES)||LA48_0==NULL||(LA48_0>=AND && LA48_0<=THEN)) && (synpred94())) {
+                            else if ( ((LA48_0>=ATTRIBUTES && LA48_0<=WHEN)||LA48_0==ENABLED||LA48_0==SALIENCE||LA48_0==DURATION||(LA48_0>=INIT && LA48_0<=RESULT)||(LA48_0>=ID && LA48_0<=OR)||(LA48_0>=CONTAINS && LA48_0<=MEMBEROF)||LA48_0==NULL||(LA48_0>=AND && LA48_0<=THEN)) && (synpred96())) {
                                 alt48=3;
                             }
                             else {
                                 if (backtracking>0) {failed=true; return d;}
                                 NoViableAltException nvae =
-                                    new NoViableAltException("1251:18: ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) )", 48, 0, input);
+                                    new NoViableAltException("1253:18: ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement ) )", 48, 0, input);
 
                                 throw nvae;
                             }
                             switch (alt48) {
                                 case 1 :
-                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1252:14: ( ACCUMULATE )=> (ac= accumulate_statement )
+                                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1254:14: ( ACCUMULATE )=> (ac= accumulate_statement )
                                     {
-                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1252:32: (ac= accumulate_statement )
-                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1252:33: ac= accumulate_statement
+                                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1254:32: (ac= accumulate_statement )
+                                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1254:33: ac= accumulate_statement
                                     {
-                                    pushFollow(FOLLOW_accumulate_statement_in_lhs_unary3555);
+                                    pushFollow(FOLLOW_accumulate_statement_in_lhs_unary3561);
                                     ac=accumulate_statement();
                                     _fsp--;
                                     if (failed) return d;
@@ -4847,12 +4849,12 @@
                                     }
                                     break;
                                 case 2 :
-                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1253:14: ( COLLECT )=> (cs= collect_statement )
+                                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1255:14: ( COLLECT )=> (cs= collect_statement )
                                     {
-                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1253:29: (cs= collect_statement )
-                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1253:30: cs= collect_statement
+                                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1255:29: (cs= collect_statement )
+                                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1255:30: cs= collect_statement
                                     {
-                                    pushFollow(FOLLOW_collect_statement_in_lhs_unary3584);
+                                    pushFollow(FOLLOW_collect_statement_in_lhs_unary3590);
                                     cs=collect_statement();
                                     _fsp--;
                                     if (failed) return d;
@@ -4866,12 +4868,12 @@
                                     }
                                     break;
                                 case 3 :
-                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1254:14: (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement )
+                                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1256:14: (~ ( ACCUMULATE | COLLECT ) )=> (fm= from_statement )
                                     {
-                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1254:43: (fm= from_statement )
-                                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1254:44: fm= from_statement
+                                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1256:43: (fm= from_statement )
+                                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1256:44: fm= from_statement
                                     {
-                                    pushFollow(FOLLOW_from_statement_in_lhs_unary3619);
+                                    pushFollow(FOLLOW_from_statement_in_lhs_unary3625);
                                     fm=from_statement();
                                     _fsp--;
                                     if (failed) return d;
@@ -4897,9 +4899,9 @@
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1257:5: u= lhs_forall
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1259:5: u= lhs_forall
                     {
-                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary3658);
+                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary3664);
                     u=lhs_forall();
                     _fsp--;
                     if (failed) return d;
@@ -4907,14 +4909,14 @@
                     }
                     break;
                 case 6 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1258:5: '(' u= lhs_or ')'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1260:5: '(' u= lhs_or ')'
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary3666); if (failed) return d;
-                    pushFollow(FOLLOW_lhs_or_in_lhs_unary3670);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary3672); if (failed) return d;
+                    pushFollow(FOLLOW_lhs_or_in_lhs_unary3676);
                     u=lhs_or();
                     _fsp--;
                     if (failed) return d;
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary3672); if (failed) return d;
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary3678); if (failed) return d;
 
                     }
                     break;
@@ -4924,7 +4926,7 @@
             if ( backtracking==0 ) {
                d = u; 
             }
-            pushFollow(FOLLOW_opt_semicolon_in_lhs_unary3682);
+            pushFollow(FOLLOW_opt_semicolon_in_lhs_unary3688);
             opt_semicolon();
             _fsp--;
             if (failed) return d;
@@ -4944,7 +4946,7 @@
 
 
     // $ANTLR start lhs_exist
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1263:1: lhs_exist returns [BaseDescr d] : loc= EXISTS ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern ) ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1265:1: lhs_exist returns [BaseDescr d] : loc= EXISTS ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern ) ;
     public final BaseDescr lhs_exist() throws RecognitionException {
         BaseDescr d = null;
 
@@ -4957,11 +4959,11 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1267:4: (loc= EXISTS ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1267:4: loc= EXISTS ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1269:4: (loc= EXISTS ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1269:4: loc= EXISTS ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )
             {
             loc=(Token)input.LT(1);
-            match(input,EXISTS,FOLLOW_EXISTS_in_lhs_exist3706); if (failed) return d;
+            match(input,EXISTS,FOLLOW_EXISTS_in_lhs_exist3712); if (failed) return d;
             if ( backtracking==0 ) {
 
               			d = new ExistsDescr( ); 
@@ -4969,7 +4971,7 @@
               			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
               		
             }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1273:10: ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1275:10: ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )
             int alt51=2;
             int LA51_0 = input.LA(1);
 
@@ -4982,19 +4984,19 @@
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1273:10: ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )", 51, 0, input);
+                    new NoViableAltException("1275:10: ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )", 51, 0, input);
 
                 throw nvae;
             }
             switch (alt51) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1273:12: ( '(' pattern= lhs_or end= ')' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1275:12: ( '(' pattern= lhs_or end= ')' )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1273:12: ( '(' pattern= lhs_or end= ')' )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1273:14: '(' pattern= lhs_or end= ')'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1275:12: ( '(' pattern= lhs_or end= ')' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1275:14: '(' pattern= lhs_or end= ')'
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist3726); if (failed) return d;
-                    pushFollow(FOLLOW_lhs_or_in_lhs_exist3730);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist3732); if (failed) return d;
+                    pushFollow(FOLLOW_lhs_or_in_lhs_exist3736);
                     pattern=lhs_or();
                     _fsp--;
                     if (failed) return d;
@@ -5002,7 +5004,7 @@
                        if ( pattern != null ) ((ExistsDescr)d).addDescr( pattern ); 
                     }
                     end=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist3762); if (failed) return d;
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist3768); if (failed) return d;
                     if ( backtracking==0 ) {
                        if ( end != null ) d.setEndCharacter( ((CommonToken)end).getStopIndex() ); 
                     }
@@ -5013,9 +5015,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1278:12: pattern= lhs_pattern
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1280:12: pattern= lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_exist3812);
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_exist3818);
                     pattern=lhs_pattern();
                     _fsp--;
                     if (failed) return d;
@@ -5049,7 +5051,7 @@
 
 
     // $ANTLR start lhs_not
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1288:1: lhs_not returns [NotDescr d] : loc= NOT ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern ) ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1290:1: lhs_not returns [NotDescr d] : loc= NOT ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern ) ;
     public final NotDescr lhs_not() throws RecognitionException {
         NotDescr d = null;
 
@@ -5062,11 +5064,11 @@
         		d = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1292:4: (loc= NOT ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1292:4: loc= NOT ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1294:4: (loc= NOT ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1294:4: loc= NOT ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )
             {
             loc=(Token)input.LT(1);
-            match(input,NOT,FOLLOW_NOT_in_lhs_not3866); if (failed) return d;
+            match(input,NOT,FOLLOW_NOT_in_lhs_not3872); if (failed) return d;
             if ( backtracking==0 ) {
 
               			d = new NotDescr( ); 
@@ -5074,7 +5076,7 @@
               			d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
               		
             }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1298:3: ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1300:3: ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )
             int alt52=2;
             int LA52_0 = input.LA(1);
 
@@ -5087,19 +5089,19 @@
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1298:3: ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )", 52, 0, input);
+                    new NoViableAltException("1300:3: ( ( '(' pattern= lhs_or end= ')' ) | pattern= lhs_pattern )", 52, 0, input);
 
                 throw nvae;
             }
             switch (alt52) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1298:5: ( '(' pattern= lhs_or end= ')' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1300:5: ( '(' pattern= lhs_or end= ')' )
                     {
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1298:5: ( '(' pattern= lhs_or end= ')' )
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1298:7: '(' pattern= lhs_or end= ')'
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1300:5: ( '(' pattern= lhs_or end= ')' )
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1300:7: '(' pattern= lhs_or end= ')'
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not3879); if (failed) return d;
-                    pushFollow(FOLLOW_lhs_or_in_lhs_not3883);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not3885); if (failed) return d;
+                    pushFollow(FOLLOW_lhs_or_in_lhs_not3889);
                     pattern=lhs_or();
                     _fsp--;
                     if (failed) return d;
@@ -5107,7 +5109,7 @@
                        if ( pattern != null ) d.addDescr( pattern ); 
                     }
                     end=(Token)input.LT(1);
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not3916); if (failed) return d;
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not3922); if (failed) return d;
                     if ( backtracking==0 ) {
                        if ( end != null ) d.setEndCharacter( ((CommonToken)end).getStopIndex() ); 
                     }
@@ -5118,9 +5120,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1304:3: pattern= lhs_pattern
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1306:3: pattern= lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_not3953);
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_not3959);
                     pattern=lhs_pattern();
                     _fsp--;
                     if (failed) return d;
@@ -5154,7 +5156,7 @@
 
 
     // $ANTLR start lhs_eval
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1314:1: lhs_eval returns [BaseDescr d] : loc= EVAL c= paren_chunk[d] ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1316:1: lhs_eval returns [BaseDescr d] : loc= EVAL c= paren_chunk[d] ;
     public final BaseDescr lhs_eval() throws RecognitionException {
         BaseDescr d = null;
 
@@ -5166,12 +5168,12 @@
         		d = new EvalDescr( );
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1319:3: (loc= EVAL c= paren_chunk[d] )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1319:3: loc= EVAL c= paren_chunk[d]
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1321:3: (loc= EVAL c= paren_chunk[d] )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1321:3: loc= EVAL c= paren_chunk[d]
             {
             loc=(Token)input.LT(1);
-            match(input,EVAL,FOLLOW_EVAL_in_lhs_eval4001); if (failed) return d;
-            pushFollow(FOLLOW_paren_chunk_in_lhs_eval4005);
+            match(input,EVAL,FOLLOW_EVAL_in_lhs_eval4007); if (failed) return d;
+            pushFollow(FOLLOW_paren_chunk_in_lhs_eval4011);
             c=paren_chunk(d);
             _fsp--;
             if (failed) return d;
@@ -5201,7 +5203,7 @@
 
 
     // $ANTLR start lhs_forall
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1330:1: lhs_forall returns [ForallDescr d] : loc= FORALL '(' base= lhs_pattern ( ( ',' )? pattern= lhs_pattern )+ end= ')' ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1332:1: lhs_forall returns [ForallDescr d] : loc= FORALL '(' base= lhs_pattern ( ( ',' )? pattern= lhs_pattern )+ end= ')' ;
     public final ForallDescr lhs_forall() throws RecognitionException {
         ForallDescr d = null;
 
@@ -5216,13 +5218,13 @@
         		d = factory.createForall();
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1334:4: (loc= FORALL '(' base= lhs_pattern ( ( ',' )? pattern= lhs_pattern )+ end= ')' )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1334:4: loc= FORALL '(' base= lhs_pattern ( ( ',' )? pattern= lhs_pattern )+ end= ')'
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1336:4: (loc= FORALL '(' base= lhs_pattern ( ( ',' )? pattern= lhs_pattern )+ end= ')' )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1336:4: loc= FORALL '(' base= lhs_pattern ( ( ',' )? pattern= lhs_pattern )+ end= ')'
             {
             loc=(Token)input.LT(1);
-            match(input,FORALL,FOLLOW_FORALL_in_lhs_forall4034); if (failed) return d;
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forall4036); if (failed) return d;
-            pushFollow(FOLLOW_lhs_pattern_in_lhs_forall4040);
+            match(input,FORALL,FOLLOW_FORALL_in_lhs_forall4040); if (failed) return d;
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forall4042); if (failed) return d;
+            pushFollow(FOLLOW_lhs_pattern_in_lhs_forall4046);
             base=lhs_pattern();
             _fsp--;
             if (failed) return d;
@@ -5234,41 +5236,41 @@
               			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
               		
             }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1341:3: ( ( ',' )? pattern= lhs_pattern )+
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1343:3: ( ( ',' )? pattern= lhs_pattern )+
             int cnt54=0;
             loop54:
             do {
                 int alt54=2;
                 int LA54_0 = input.LA(1);
 
-                if ( (LA54_0==ID||LA54_0==66) ) {
+                if ( (LA54_0==ID||LA54_0==68) ) {
                     alt54=1;
                 }
 
 
                 switch (alt54) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1341:5: ( ',' )? pattern= lhs_pattern
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1343:5: ( ',' )? pattern= lhs_pattern
             	    {
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1341:5: ( ',' )?
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1343:5: ( ',' )?
             	    int alt53=2;
             	    int LA53_0 = input.LA(1);
 
-            	    if ( (LA53_0==66) ) {
+            	    if ( (LA53_0==68) ) {
             	        alt53=1;
             	    }
             	    switch (alt53) {
             	        case 1 :
-            	            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1341:6: ','
+            	            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1343:6: ','
             	            {
-            	            match(input,66,FOLLOW_66_in_lhs_forall4054); if (failed) return d;
+            	            match(input,68,FOLLOW_68_in_lhs_forall4060); if (failed) return d;
 
             	            }
             	            break;
 
             	    }
 
-            	    pushFollow(FOLLOW_lhs_pattern_in_lhs_forall4060);
+            	    pushFollow(FOLLOW_lhs_pattern_in_lhs_forall4066);
             	    pattern=lhs_pattern();
             	    _fsp--;
             	    if (failed) return d;
@@ -5293,7 +5295,7 @@
             } while (true);
 
             end=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall4075); if (failed) return d;
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall4081); if (failed) return d;
             if ( backtracking==0 ) {
 
               		        if ( end != null ) d.setEndCharacter( ((CommonToken)end).getStopIndex() );
@@ -5315,7 +5317,7 @@
 
 
     // $ANTLR start dotted_name
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1353:1: dotted_name[BaseDescr descr] returns [String name] : id= ID ( '.' ident= identifier )* ( '[' loc= ']' )* ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1355:1: dotted_name[BaseDescr descr] returns [String name] : id= ID ( '.' ident= identifier )* ( '[' loc= ']' )* ;
     public final String dotted_name(BaseDescr descr) throws RecognitionException {
         String name = null;
 
@@ -5328,11 +5330,11 @@
         		name = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1358:3: (id= ID ( '.' ident= identifier )* ( '[' loc= ']' )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1358:3: id= ID ( '.' ident= identifier )* ( '[' loc= ']' )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1360:3: (id= ID ( '.' ident= identifier )* ( '[' loc= ']' )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1360:3: id= ID ( '.' ident= identifier )* ( '[' loc= ']' )*
             {
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_dotted_name4106); if (failed) return name;
+            match(input,ID,FOLLOW_ID_in_dotted_name4112); if (failed) return name;
             if ( backtracking==0 ) {
                
               		    name=id.getText(); 
@@ -5342,23 +5344,23 @@
               		    }
               		
             }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1366:3: ( '.' ident= identifier )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1368:3: ( '.' ident= identifier )*
             loop55:
             do {
                 int alt55=2;
                 int LA55_0 = input.LA(1);
 
-                if ( (LA55_0==67) ) {
+                if ( (LA55_0==69) ) {
                     alt55=1;
                 }
 
 
                 switch (alt55) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1366:5: '.' ident= identifier
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1368:5: '.' ident= identifier
             	    {
-            	    match(input,67,FOLLOW_67_in_dotted_name4118); if (failed) return name;
-            	    pushFollow(FOLLOW_identifier_in_dotted_name4122);
+            	    match(input,69,FOLLOW_69_in_dotted_name4124); if (failed) return name;
+            	    pushFollow(FOLLOW_identifier_in_dotted_name4128);
             	    ident=identifier();
             	    _fsp--;
             	    if (failed) return name;
@@ -5379,7 +5381,7 @@
                 }
             } while (true);
 
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1374:3: ( '[' loc= ']' )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1376:3: ( '[' loc= ']' )*
             loop56:
             do {
                 int alt56=2;
@@ -5392,11 +5394,11 @@
 
                 switch (alt56) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1374:5: '[' loc= ']'
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1376:5: '[' loc= ']'
             	    {
-            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dotted_name4144); if (failed) return name;
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dotted_name4150); if (failed) return name;
             	    loc=(Token)input.LT(1);
-            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dotted_name4148); if (failed) return name;
+            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dotted_name4154); if (failed) return name;
             	    if ( backtracking==0 ) {
             	       
             	      		        name = name + "[]";
@@ -5430,7 +5432,7 @@
 
 
     // $ANTLR start argument
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1384:1: argument returns [String name] : id= identifier ( '[' ']' )* ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1386:1: argument returns [String name] : id= identifier ( '[' ']' )* ;
     public final String argument() throws RecognitionException {
         String name = null;
 
@@ -5441,17 +5443,17 @@
         		name = null;
         	
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1389:3: (id= identifier ( '[' ']' )* )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1389:3: id= identifier ( '[' ']' )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1391:3: (id= identifier ( '[' ']' )* )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1391:3: id= identifier ( '[' ']' )*
             {
-            pushFollow(FOLLOW_identifier_in_argument4187);
+            pushFollow(FOLLOW_identifier_in_argument4193);
             id=identifier();
             _fsp--;
             if (failed) return name;
             if ( backtracking==0 ) {
                name=id.getText(); 
             }
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1389:40: ( '[' ']' )*
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1391:40: ( '[' ']' )*
             loop57:
             do {
                 int alt57=2;
@@ -5464,10 +5466,10 @@
 
                 switch (alt57) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1389:42: '[' ']'
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1391:42: '[' ']'
             	    {
-            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_argument4193); if (failed) return name;
-            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_argument4195); if (failed) return name;
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_argument4199); if (failed) return name;
+            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_argument4201); if (failed) return name;
             	    if ( backtracking==0 ) {
             	       name = name + "[]";
             	    }
@@ -5496,7 +5498,7 @@
 
 
     // $ANTLR start rhs_chunk
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1392:1: rhs_chunk[RuleDescr rule] : start= THEN (~ END )* loc= END ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1394:1: rhs_chunk[RuleDescr rule] : start= THEN (~ END )* loc= END ;
     public final void rhs_chunk(RuleDescr rule) throws RecognitionException {
         Token start=null;
         Token loc=null;
@@ -5506,8 +5508,8 @@
                    Integer channel = null;
                 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1398:10: (start= THEN (~ END )* loc= END )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1398:10: start= THEN (~ END )* loc= END
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1400:10: (start= THEN (~ END )* loc= END )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1400:10: start= THEN (~ END )* loc= END
             {
             if ( backtracking==0 ) {
 
@@ -5517,23 +5519,23 @@
               	        
             }
             start=(Token)input.LT(1);
-            match(input,THEN,FOLLOW_THEN_in_rhs_chunk4239); if (failed) return ;
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1404:3: (~ END )*
+            match(input,THEN,FOLLOW_THEN_in_rhs_chunk4245); if (failed) return ;
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1406:3: (~ END )*
             loop58:
             do {
                 int alt58=2;
                 int LA58_0 = input.LA(1);
 
-                if ( ((LA58_0>=ATTRIBUTES && LA58_0<=QUERY)||(LA58_0>=TEMPLATE && LA58_0<=79)) ) {
+                if ( ((LA58_0>=ATTRIBUTES && LA58_0<=QUERY)||(LA58_0>=TEMPLATE && LA58_0<=81)) ) {
                     alt58=1;
                 }
 
 
                 switch (alt58) {
             	case 1 :
-            	    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1405:6: ~ END
+            	    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1407:6: ~ END
             	    {
-            	    if ( (input.LA(1)>=ATTRIBUTES && input.LA(1)<=QUERY)||(input.LA(1)>=TEMPLATE && input.LA(1)<=79) ) {
+            	    if ( (input.LA(1)>=ATTRIBUTES && input.LA(1)<=QUERY)||(input.LA(1)>=TEMPLATE && input.LA(1)<=81) ) {
             	        input.consume();
             	        errorRecovery=false;failed=false;
             	    }
@@ -5541,7 +5543,7 @@
             	        if (backtracking>0) {failed=true; return ;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_rhs_chunk4251);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_rhs_chunk4257);    throw mse;
             	    }
 
             	    if ( backtracking==0 ) {
@@ -5568,7 +5570,7 @@
               		
             }
             loc=(Token)input.LT(1);
-            match(input,END,FOLLOW_END_in_rhs_chunk4288); if (failed) return ;
+            match(input,END,FOLLOW_END_in_rhs_chunk4294); if (failed) return ;
             if ( backtracking==0 ) {
 
                                   // ignoring first line in the consequence
@@ -5602,7 +5604,7 @@
 
 
     // $ANTLR start name
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1435:1: name returns [String s] : (tok= ID | str= STRING ) ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1437:1: name returns [String s] : (tok= ID | str= STRING ) ;
     public final String name() throws RecognitionException {
         String s = null;
 
@@ -5610,10 +5612,10 @@
         Token str=null;
 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1437:2: ( (tok= ID | str= STRING ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1437:2: (tok= ID | str= STRING )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1439:2: ( (tok= ID | str= STRING ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1439:2: (tok= ID | str= STRING )
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1437:2: (tok= ID | str= STRING )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1439:2: (tok= ID | str= STRING )
             int alt59=2;
             int LA59_0 = input.LA(1);
 
@@ -5626,16 +5628,16 @@
             else {
                 if (backtracking>0) {failed=true; return s;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1437:2: (tok= ID | str= STRING )", 59, 0, input);
+                    new NoViableAltException("1439:2: (tok= ID | str= STRING )", 59, 0, input);
 
                 throw nvae;
             }
             switch (alt59) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1438:6: tok= ID
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1440:6: tok= ID
                     {
                     tok=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_name4332); if (failed) return s;
+                    match(input,ID,FOLLOW_ID_in_name4338); if (failed) return s;
                     if ( backtracking==0 ) {
 
                       	        s = tok.getText();
@@ -5645,10 +5647,10 @@
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1443:6: str= STRING
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1445:6: str= STRING
                     {
                     str=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_name4351); if (failed) return s;
+                    match(input,STRING,FOLLOW_STRING_in_name4357); if (failed) return s;
                     if ( backtracking==0 ) {
 
                       	       s = getString( str );
@@ -5676,18 +5678,18 @@
 
 
     // $ANTLR start identifier
-    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1450:1: identifier returns [Token tok] : (t= ID | t= PACKAGE | t= FUNCTION | t= GLOBAL | t= IMPORT | t= RULE | t= QUERY | t= TEMPLATE | t= ATTRIBUTES | t= ENABLED | t= SALIENCE | t= DURATION | t= FROM | t= ACCUMULATE | t= INIT | t= ACTION | t= RESULT | t= COLLECT | t= OR | t= AND | t= CONTAINS | t= EXCLUDES | t= MATCHES | t= NULL | t= EXISTS | t= NOT | t= EVAL | t= FORALL | t= WHEN | t= THEN | t= END ) ;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1452:1: identifier returns [Token tok] : (t= ID | t= PACKAGE | t= FUNCTION | t= GLOBAL | t= IMPORT | t= RULE | t= QUERY | t= TEMPLATE | t= ATTRIBUTES | t= ENABLED | t= SALIENCE | t= DURATION | t= FROM | t= ACCUMULATE | t= INIT | t= ACTION | t= RESULT | t= COLLECT | t= OR | t= AND | t= CONTAINS | t= EXCLUDES | t= MEMBEROF | t= MATCHES | t= NULL | t= EXISTS | t= NOT | t= EVAL | t= FORALL | t= WHEN | t= THEN | t= END ) ;
     public final Token identifier() throws RecognitionException {
         Token tok = null;
 
         Token t=null;
 
         try {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1452:2: ( (t= ID | t= PACKAGE | t= FUNCTION | t= GLOBAL | t= IMPORT | t= RULE | t= QUERY | t= TEMPLATE | t= ATTRIBUTES | t= ENABLED | t= SALIENCE | t= DURATION | t= FROM | t= ACCUMULATE | t= INIT | t= ACTION | t= RESULT | t= COLLECT | t= OR | t= AND | t= CONTAINS | t= EXCLUDES | t= MATCHES | t= NULL | t= EXISTS | t= NOT | t= EVAL | t= FORALL | t= WHEN | t= THEN | t= END ) )
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1452:2: (t= ID | t= PACKAGE | t= FUNCTION | t= GLOBAL | t= IMPORT | t= RULE | t= QUERY | t= TEMPLATE | t= ATTRIBUTES | t= ENABLED | t= SALIENCE | t= DURATION | t= FROM | t= ACCUMULATE | t= INIT | t= ACTION | t= RESULT | t= COLLECT | t= OR | t= AND | t= CONTAINS | t= EXCLUDES | t= MATCHES | t= NULL | t= EXISTS | t= NOT | t= EVAL | t= FORALL | t= WHEN | t= THEN | t= END )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1454:2: ( (t= ID | t= PACKAGE | t= FUNCTION | t= GLOBAL | t= IMPORT | t= RULE | t= QUERY | t= TEMPLATE | t= ATTRIBUTES | t= ENABLED | t= SALIENCE | t= DURATION | t= FROM | t= ACCUMULATE | t= INIT | t= ACTION | t= RESULT | t= COLLECT | t= OR | t= AND | t= CONTAINS | t= EXCLUDES | t= MEMBEROF | t= MATCHES | t= NULL | t= EXISTS | t= NOT | t= EVAL | t= FORALL | t= WHEN | t= THEN | t= END ) )
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1454:2: (t= ID | t= PACKAGE | t= FUNCTION | t= GLOBAL | t= IMPORT | t= RULE | t= QUERY | t= TEMPLATE | t= ATTRIBUTES | t= ENABLED | t= SALIENCE | t= DURATION | t= FROM | t= ACCUMULATE | t= INIT | t= ACTION | t= RESULT | t= COLLECT | t= OR | t= AND | t= CONTAINS | t= EXCLUDES | t= MEMBEROF | t= MATCHES | t= NULL | t= EXISTS | t= NOT | t= EVAL | t= FORALL | t= WHEN | t= THEN | t= END )
             {
-            // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1452:2: (t= ID | t= PACKAGE | t= FUNCTION | t= GLOBAL | t= IMPORT | t= RULE | t= QUERY | t= TEMPLATE | t= ATTRIBUTES | t= ENABLED | t= SALIENCE | t= DURATION | t= FROM | t= ACCUMULATE | t= INIT | t= ACTION | t= RESULT | t= COLLECT | t= OR | t= AND | t= CONTAINS | t= EXCLUDES | t= MATCHES | t= NULL | t= EXISTS | t= NOT | t= EVAL | t= FORALL | t= WHEN | t= THEN | t= END )
-            int alt60=31;
+            // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1454:2: (t= ID | t= PACKAGE | t= FUNCTION | t= GLOBAL | t= IMPORT | t= RULE | t= QUERY | t= TEMPLATE | t= ATTRIBUTES | t= ENABLED | t= SALIENCE | t= DURATION | t= FROM | t= ACCUMULATE | t= INIT | t= ACTION | t= RESULT | t= COLLECT | t= OR | t= AND | t= CONTAINS | t= EXCLUDES | t= MEMBEROF | t= MATCHES | t= NULL | t= EXISTS | t= NOT | t= EVAL | t= FORALL | t= WHEN | t= THEN | t= END )
+            int alt60=32;
             switch ( input.LA(1) ) {
             case ID:
                 {
@@ -5799,309 +5801,322 @@
                 alt60=22;
                 }
                 break;
-            case MATCHES:
+            case MEMBEROF:
                 {
                 alt60=23;
                 }
                 break;
-            case NULL:
+            case MATCHES:
                 {
                 alt60=24;
                 }
                 break;
-            case EXISTS:
+            case NULL:
                 {
                 alt60=25;
                 }
                 break;
-            case NOT:
+            case EXISTS:
                 {
                 alt60=26;
                 }
                 break;
-            case EVAL:
+            case NOT:
                 {
                 alt60=27;
                 }
                 break;
-            case FORALL:
+            case EVAL:
                 {
                 alt60=28;
                 }
                 break;
-            case WHEN:
+            case FORALL:
                 {
                 alt60=29;
                 }
                 break;
-            case THEN:
+            case WHEN:
                 {
                 alt60=30;
                 }
                 break;
-            case END:
+            case THEN:
                 {
                 alt60=31;
                 }
                 break;
+            case END:
+                {
+                alt60=32;
+                }
+                break;
             default:
                 if (backtracking>0) {failed=true; return tok;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1452:2: (t= ID | t= PACKAGE | t= FUNCTION | t= GLOBAL | t= IMPORT | t= RULE | t= QUERY | t= TEMPLATE | t= ATTRIBUTES | t= ENABLED | t= SALIENCE | t= DURATION | t= FROM | t= ACCUMULATE | t= INIT | t= ACTION | t= RESULT | t= COLLECT | t= OR | t= AND | t= CONTAINS | t= EXCLUDES | t= MATCHES | t= NULL | t= EXISTS | t= NOT | t= EVAL | t= FORALL | t= WHEN | t= THEN | t= END )", 60, 0, input);
+                    new NoViableAltException("1454:2: (t= ID | t= PACKAGE | t= FUNCTION | t= GLOBAL | t= IMPORT | t= RULE | t= QUERY | t= TEMPLATE | t= ATTRIBUTES | t= ENABLED | t= SALIENCE | t= DURATION | t= FROM | t= ACCUMULATE | t= INIT | t= ACTION | t= RESULT | t= COLLECT | t= OR | t= AND | t= CONTAINS | t= EXCLUDES | t= MEMBEROF | t= MATCHES | t= NULL | t= EXISTS | t= NOT | t= EVAL | t= FORALL | t= WHEN | t= THEN | t= END )", 60, 0, input);
 
                 throw nvae;
             }
 
             switch (alt60) {
                 case 1 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1452:10: t= ID
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1454:10: t= ID
                     {
                     t=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_identifier4389); if (failed) return tok;
+                    match(input,ID,FOLLOW_ID_in_identifier4395); if (failed) return tok;
 
                     }
                     break;
                 case 2 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1453:4: t= PACKAGE
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1455:4: t= PACKAGE
                     {
                     t=(Token)input.LT(1);
-                    match(input,PACKAGE,FOLLOW_PACKAGE_in_identifier4402); if (failed) return tok;
+                    match(input,PACKAGE,FOLLOW_PACKAGE_in_identifier4408); if (failed) return tok;
 
                     }
                     break;
                 case 3 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1454:4: t= FUNCTION
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1456:4: t= FUNCTION
                     {
                     t=(Token)input.LT(1);
-                    match(input,FUNCTION,FOLLOW_FUNCTION_in_identifier4409); if (failed) return tok;
+                    match(input,FUNCTION,FOLLOW_FUNCTION_in_identifier4415); if (failed) return tok;
 
                     }
                     break;
                 case 4 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1455:4: t= GLOBAL
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1457:4: t= GLOBAL
                     {
                     t=(Token)input.LT(1);
-                    match(input,GLOBAL,FOLLOW_GLOBAL_in_identifier4416); if (failed) return tok;
+                    match(input,GLOBAL,FOLLOW_GLOBAL_in_identifier4422); if (failed) return tok;
 
                     }
                     break;
                 case 5 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1456:4: t= IMPORT
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1458:4: t= IMPORT
                     {
                     t=(Token)input.LT(1);
-                    match(input,IMPORT,FOLLOW_IMPORT_in_identifier4423); if (failed) return tok;
+                    match(input,IMPORT,FOLLOW_IMPORT_in_identifier4429); if (failed) return tok;
 
                     }
                     break;
                 case 6 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1457:4: t= RULE
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1459:4: t= RULE
                     {
                     t=(Token)input.LT(1);
-                    match(input,RULE,FOLLOW_RULE_in_identifier4432); if (failed) return tok;
+                    match(input,RULE,FOLLOW_RULE_in_identifier4438); if (failed) return tok;
 
                     }
                     break;
                 case 7 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1458:4: t= QUERY
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1460:4: t= QUERY
                     {
                     t=(Token)input.LT(1);
-                    match(input,QUERY,FOLLOW_QUERY_in_identifier4439); if (failed) return tok;
+                    match(input,QUERY,FOLLOW_QUERY_in_identifier4445); if (failed) return tok;
 
                     }
                     break;
                 case 8 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1459:17: t= TEMPLATE
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1461:17: t= TEMPLATE
                     {
                     t=(Token)input.LT(1);
-                    match(input,TEMPLATE,FOLLOW_TEMPLATE_in_identifier4460); if (failed) return tok;
+                    match(input,TEMPLATE,FOLLOW_TEMPLATE_in_identifier4466); if (failed) return tok;
 
                     }
                     break;
                 case 9 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1460:17: t= ATTRIBUTES
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1462:17: t= ATTRIBUTES
                     {
                     t=(Token)input.LT(1);
-                    match(input,ATTRIBUTES,FOLLOW_ATTRIBUTES_in_identifier4488); if (failed) return tok;
+                    match(input,ATTRIBUTES,FOLLOW_ATTRIBUTES_in_identifier4494); if (failed) return tok;
 
                     }
                     break;
                 case 10 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1461:17: t= ENABLED
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1463:17: t= ENABLED
                     {
                     t=(Token)input.LT(1);
-                    match(input,ENABLED,FOLLOW_ENABLED_in_identifier4514); if (failed) return tok;
+                    match(input,ENABLED,FOLLOW_ENABLED_in_identifier4520); if (failed) return tok;
 
                     }
                     break;
                 case 11 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1462:17: t= SALIENCE
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1464:17: t= SALIENCE
                     {
                     t=(Token)input.LT(1);
-                    match(input,SALIENCE,FOLLOW_SALIENCE_in_identifier4543); if (failed) return tok;
+                    match(input,SALIENCE,FOLLOW_SALIENCE_in_identifier4549); if (failed) return tok;
 
                     }
                     break;
                 case 12 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1463:17: t= DURATION
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1465:17: t= DURATION
                     {
                     t=(Token)input.LT(1);
-                    match(input,DURATION,FOLLOW_DURATION_in_identifier4565); if (failed) return tok;
+                    match(input,DURATION,FOLLOW_DURATION_in_identifier4571); if (failed) return tok;
 
                     }
                     break;
                 case 13 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1464:17: t= FROM
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1466:17: t= FROM
                     {
                     t=(Token)input.LT(1);
-                    match(input,FROM,FOLLOW_FROM_in_identifier4587); if (failed) return tok;
+                    match(input,FROM,FOLLOW_FROM_in_identifier4593); if (failed) return tok;
 
                     }
                     break;
                 case 14 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1465:17: t= ACCUMULATE
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1467:17: t= ACCUMULATE
                     {
                     t=(Token)input.LT(1);
-                    match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_identifier4616); if (failed) return tok;
+                    match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_identifier4622); if (failed) return tok;
 
                     }
                     break;
                 case 15 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1466:17: t= INIT
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1468:17: t= INIT
                     {
                     t=(Token)input.LT(1);
-                    match(input,INIT,FOLLOW_INIT_in_identifier4638); if (failed) return tok;
+                    match(input,INIT,FOLLOW_INIT_in_identifier4644); if (failed) return tok;
 
                     }
                     break;
                 case 16 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1467:17: t= ACTION
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1469:17: t= ACTION
                     {
                     t=(Token)input.LT(1);
-                    match(input,ACTION,FOLLOW_ACTION_in_identifier4667); if (failed) return tok;
+                    match(input,ACTION,FOLLOW_ACTION_in_identifier4673); if (failed) return tok;
 
                     }
                     break;
                 case 17 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1468:17: t= RESULT
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1470:17: t= RESULT
                     {
                     t=(Token)input.LT(1);
-                    match(input,RESULT,FOLLOW_RESULT_in_identifier4696); if (failed) return tok;
+                    match(input,RESULT,FOLLOW_RESULT_in_identifier4702); if (failed) return tok;
 
                     }
                     break;
                 case 18 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1469:17: t= COLLECT
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1471:17: t= COLLECT
                     {
                     t=(Token)input.LT(1);
-                    match(input,COLLECT,FOLLOW_COLLECT_in_identifier4725); if (failed) return tok;
+                    match(input,COLLECT,FOLLOW_COLLECT_in_identifier4731); if (failed) return tok;
 
                     }
                     break;
                 case 19 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1470:17: t= OR
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1472:17: t= OR
                     {
                     t=(Token)input.LT(1);
-                    match(input,OR,FOLLOW_OR_in_identifier4754); if (failed) return tok;
+                    match(input,OR,FOLLOW_OR_in_identifier4760); if (failed) return tok;
 
                     }
                     break;
                 case 20 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1471:17: t= AND
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1473:17: t= AND
                     {
                     t=(Token)input.LT(1);
-                    match(input,AND,FOLLOW_AND_in_identifier4783); if (failed) return tok;
+                    match(input,AND,FOLLOW_AND_in_identifier4789); if (failed) return tok;
 
                     }
                     break;
                 case 21 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1472:17: t= CONTAINS
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1474:17: t= CONTAINS
                     {
                     t=(Token)input.LT(1);
-                    match(input,CONTAINS,FOLLOW_CONTAINS_in_identifier4812); if (failed) return tok;
+                    match(input,CONTAINS,FOLLOW_CONTAINS_in_identifier4818); if (failed) return tok;
 
                     }
                     break;
                 case 22 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1473:17: t= EXCLUDES
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1475:17: t= EXCLUDES
                     {
                     t=(Token)input.LT(1);
-                    match(input,EXCLUDES,FOLLOW_EXCLUDES_in_identifier4834); if (failed) return tok;
+                    match(input,EXCLUDES,FOLLOW_EXCLUDES_in_identifier4840); if (failed) return tok;
 
                     }
                     break;
                 case 23 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1474:17: t= MATCHES
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1476:17: t= MEMBEROF
                     {
                     t=(Token)input.LT(1);
-                    match(input,MATCHES,FOLLOW_MATCHES_in_identifier4856); if (failed) return tok;
+                    match(input,MEMBEROF,FOLLOW_MEMBEROF_in_identifier4862); if (failed) return tok;
 
                     }
                     break;
                 case 24 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1475:17: t= NULL
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1477:17: t= MATCHES
                     {
                     t=(Token)input.LT(1);
-                    match(input,NULL,FOLLOW_NULL_in_identifier4885); if (failed) return tok;
+                    match(input,MATCHES,FOLLOW_MATCHES_in_identifier4882); if (failed) return tok;
 
                     }
                     break;
                 case 25 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1476:17: t= EXISTS
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1478:17: t= NULL
                     {
                     t=(Token)input.LT(1);
-                    match(input,EXISTS,FOLLOW_EXISTS_in_identifier4914); if (failed) return tok;
+                    match(input,NULL,FOLLOW_NULL_in_identifier4911); if (failed) return tok;
 
                     }
                     break;
                 case 26 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1477:17: t= NOT
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1479:17: t= EXISTS
                     {
                     t=(Token)input.LT(1);
-                    match(input,NOT,FOLLOW_NOT_in_identifier4943); if (failed) return tok;
+                    match(input,EXISTS,FOLLOW_EXISTS_in_identifier4940); if (failed) return tok;
 
                     }
                     break;
                 case 27 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1478:17: t= EVAL
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1480:17: t= NOT
                     {
                     t=(Token)input.LT(1);
-                    match(input,EVAL,FOLLOW_EVAL_in_identifier4972); if (failed) return tok;
+                    match(input,NOT,FOLLOW_NOT_in_identifier4969); if (failed) return tok;
 
                     }
                     break;
                 case 28 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1479:17: t= FORALL
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1481:17: t= EVAL
                     {
                     t=(Token)input.LT(1);
-                    match(input,FORALL,FOLLOW_FORALL_in_identifier5001); if (failed) return tok;
+                    match(input,EVAL,FOLLOW_EVAL_in_identifier4998); if (failed) return tok;
 
                     }
                     break;
                 case 29 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1480:17: t= WHEN
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1482:17: t= FORALL
                     {
                     t=(Token)input.LT(1);
-                    match(input,WHEN,FOLLOW_WHEN_in_identifier5039); if (failed) return tok;
+                    match(input,FORALL,FOLLOW_FORALL_in_identifier5027); if (failed) return tok;
 
                     }
                     break;
                 case 30 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1481:17: t= THEN
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1483:17: t= WHEN
                     {
                     t=(Token)input.LT(1);
-                    match(input,THEN,FOLLOW_THEN_in_identifier5071); if (failed) return tok;
+                    match(input,WHEN,FOLLOW_WHEN_in_identifier5065); if (failed) return tok;
 
                     }
                     break;
                 case 31 :
-                    // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1482:17: t= END
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1484:17: t= THEN
                     {
                     t=(Token)input.LT(1);
-                    match(input,END,FOLLOW_END_in_identifier5100); if (failed) return tok;
+                    match(input,THEN,FOLLOW_THEN_in_identifier5097); if (failed) return tok;
 
                     }
                     break;
+                case 32 :
+                    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1485:17: t= END
+                    {
+                    t=(Token)input.LT(1);
+                    match(input,END,FOLLOW_END_in_identifier5126); if (failed) return tok;
 
+                    }
+                    break;
+
             }
 
             if ( backtracking==0 ) {
@@ -6125,8 +6140,8 @@
 
     // $ANTLR start synpred7
     public final void synpred7_fragment() throws RecognitionException {   
-        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:195:4: ( function_import_statement )
-        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:195:4: function_import_statement
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:195:4: ( function_import_statement )
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:195:4: function_import_statement
         {
         pushFollow(FOLLOW_function_import_statement_in_synpred7150);
         function_import_statement();
@@ -6139,8 +6154,8 @@
 
     // $ANTLR start synpred8
     public final void synpred8_fragment() throws RecognitionException {   
-        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:196:4: ( import_statement )
-        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:196:4: import_statement
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:196:4: ( import_statement )
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:196:4: import_statement
         {
         pushFollow(FOLLOW_import_statement_in_synpred8156);
         import_statement();
@@ -6153,8 +6168,8 @@
 
     // $ANTLR start synpred42
     public final void synpred42_fragment() throws RecognitionException {   
-        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:742:4: ( paren_chunk[from] )
-        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:742:4: paren_chunk[from]
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:742:4: ( paren_chunk[from] )
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:742:4: paren_chunk[from]
         {
         pushFollow(FOLLOW_paren_chunk_in_synpred421876);
         paren_chunk(from);
@@ -6167,8 +6182,8 @@
 
     // $ANTLR start synpred44
     public final void synpred44_fragment() throws RecognitionException {   
-        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:772:6: ( LEFT_SQUARE )
-        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:772:8: LEFT_SQUARE
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:772:6: ( LEFT_SQUARE )
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:772:8: LEFT_SQUARE
         {
         match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_synpred441942); if (failed) return ;
 
@@ -6178,8 +6193,8 @@
 
     // $ANTLR start synpred45
     public final void synpred45_fragment() throws RecognitionException {   
-        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:777:6: ( LEFT_PAREN )
-        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:777:8: LEFT_PAREN
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:777:6: ( LEFT_PAREN )
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:777:8: LEFT_PAREN
         {
         match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred451976); if (failed) return ;
 
@@ -6189,10 +6204,10 @@
 
     // $ANTLR start synpred49
     public final void synpred49_fragment() throws RecognitionException {   
-        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:6: ( ( OR | '||' ) fact )
-        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:6: ( OR | '||' ) fact
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:6: ( ( OR | '||' ) fact )
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:6: ( OR | '||' ) fact
         {
-        if ( input.LA(1)==OR||input.LA(1)==69 ) {
+        if ( input.LA(1)==OR||input.LA(1)==71 ) {
             input.consume();
             errorRecovery=false;failed=false;
         }
@@ -6212,34 +6227,34 @@
     }
     // $ANTLR end synpred49
 
-    // $ANTLR start synpred91
-    public final void synpred91_fragment() throws RecognitionException {   
-        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1252:14: ( ACCUMULATE )
-        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1252:16: ACCUMULATE
+    // $ANTLR start synpred93
+    public final void synpred93_fragment() throws RecognitionException {   
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1254:14: ( ACCUMULATE )
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1254:16: ACCUMULATE
         {
-        match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_synpred913546); if (failed) return ;
+        match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_synpred933552); if (failed) return ;
 
         }
     }
-    // $ANTLR end synpred91
+    // $ANTLR end synpred93
 
-    // $ANTLR start synpred92
-    public final void synpred92_fragment() throws RecognitionException {   
-        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1253:14: ( COLLECT )
-        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1253:16: COLLECT
+    // $ANTLR start synpred94
+    public final void synpred94_fragment() throws RecognitionException {   
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1255:14: ( COLLECT )
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1255:16: COLLECT
         {
-        match(input,COLLECT,FOLLOW_COLLECT_in_synpred923575); if (failed) return ;
+        match(input,COLLECT,FOLLOW_COLLECT_in_synpred943581); if (failed) return ;
 
         }
     }
-    // $ANTLR end synpred92
+    // $ANTLR end synpred94
 
-    // $ANTLR start synpred94
-    public final void synpred94_fragment() throws RecognitionException {   
-        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1254:14: (~ ( ACCUMULATE | COLLECT ) )
-        // /home/michael/projects/jboss-rules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1254:16: ~ ( ACCUMULATE | COLLECT )
+    // $ANTLR start synpred96
+    public final void synpred96_fragment() throws RecognitionException {   
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1256:14: (~ ( ACCUMULATE | COLLECT ) )
+        // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1256:16: ~ ( ACCUMULATE | COLLECT )
         {
-        if ( (input.LA(1)>=ATTRIBUTES && input.LA(1)<=LOCK_ON_ACTIVE)||(input.LA(1)>=INIT && input.LA(1)<=RESULT)||(input.LA(1)>=ID && input.LA(1)<=79) ) {
+        if ( (input.LA(1)>=ATTRIBUTES && input.LA(1)<=LOCK_ON_ACTIVE)||(input.LA(1)>=INIT && input.LA(1)<=RESULT)||(input.LA(1)>=ID && input.LA(1)<=81) ) {
             input.consume();
             errorRecovery=false;failed=false;
         }
@@ -6247,13 +6262,13 @@
             if (backtracking>0) {failed=true; return ;}
             MismatchedSetException mse =
                 new MismatchedSetException(null,input);
-            recoverFromMismatchedSet(input,mse,FOLLOW_set_in_synpred943605);    throw mse;
+            recoverFromMismatchedSet(input,mse,FOLLOW_set_in_synpred963611);    throw mse;
         }
 
 
         }
     }
-    // $ANTLR end synpred94
+    // $ANTLR end synpred96
 
     public final boolean synpred44() {
         backtracking++;
@@ -6269,11 +6284,11 @@
         failed=false;
         return success;
     }
-    public final boolean synpred92() {
+    public final boolean synpred49() {
         backtracking++;
         int start = input.mark();
         try {
-            synpred92_fragment(); // can never throw exception
+            synpred49_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -6283,11 +6298,11 @@
         failed=false;
         return success;
     }
-    public final boolean synpred49() {
+    public final boolean synpred96() {
         backtracking++;
         int start = input.mark();
         try {
-            synpred49_fragment(); // can never throw exception
+            synpred96_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -6339,11 +6354,11 @@
         failed=false;
         return success;
     }
-    public final boolean synpred91() {
+    public final boolean synpred8() {
         backtracking++;
         int start = input.mark();
         try {
-            synpred91_fragment(); // can never throw exception
+            synpred8_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -6353,11 +6368,11 @@
         failed=false;
         return success;
     }
-    public final boolean synpred8() {
+    public final boolean synpred93() {
         backtracking++;
         int start = input.mark();
         try {
-            synpred8_fragment(); // can never throw exception
+            synpred93_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -6390,24 +6405,24 @@
     static final String DFA11_eofS =
         "\6\uffff";
     static final String DFA11_minS =
-        "\2\4\1\uffff\1\56\1\uffff\1\4";
+        "\2\4\2\uffff\1\60\1\4";
     static final String DFA11_maxS =
-        "\1\65\1\103\1\uffff\1\56\1\uffff\1\102";
+        "\1\67\1\105\2\uffff\1\60\1\104";
     static final String DFA11_acceptS =
-        "\2\uffff\1\2\1\uffff\1\1\1\uffff";
+        "\2\uffff\1\2\1\1\2\uffff";
     static final String DFA11_specialS =
         "\6\uffff}>";
     static final String[] DFA11_transitionS = {
             "\12\2\3\uffff\1\2\1\uffff\1\2\6\uffff\1\2\2\uffff\5\2\1\1\1"+
-            "\2\2\uffff\3\2\1\uffff\1\2\4\uffff\7\2",
-            "\12\4\3\uffff\1\4\1\uffff\1\4\6\uffff\1\4\2\uffff\7\4\1\uffff"+
-            "\1\2\3\4\1\uffff\1\4\2\uffff\1\3\1\uffff\7\4\14\uffff\1\2\1"+
-            "\4",
+            "\2\2\uffff\4\2\2\uffff\1\2\4\uffff\7\2",
+            "\12\3\3\uffff\1\3\1\uffff\1\3\6\uffff\1\3\2\uffff\7\3\1\uffff"+
+            "\1\2\4\3\2\uffff\1\3\2\uffff\1\4\1\uffff\7\3\14\uffff\1\2\1"+
+            "\3",
             "",
+            "",
             "\1\5",
-            "",
-            "\12\4\3\uffff\1\4\1\uffff\1\4\6\uffff\1\4\2\uffff\7\4\1\uffff"+
-            "\1\2\3\4\1\uffff\1\4\2\uffff\1\3\1\uffff\7\4\14\uffff\1\2"
+            "\12\3\3\uffff\1\3\1\uffff\1\3\6\uffff\1\3\2\uffff\7\3\1\uffff"+
+            "\1\2\4\3\2\uffff\1\3\2\uffff\1\4\1\uffff\7\3\14\uffff\1\2"
     };
 
     static final short[] DFA11_eot = DFA.unpackEncodedString(DFA11_eotS);
@@ -6448,24 +6463,24 @@
     static final String DFA12_eofS =
         "\6\uffff";
     static final String DFA12_minS =
-        "\2\4\2\uffff\1\56\1\4";
+        "\2\4\1\uffff\1\60\1\uffff\1\4";
     static final String DFA12_maxS =
-        "\1\65\1\103\2\uffff\1\56\1\102";
+        "\1\67\1\105\1\uffff\1\60\1\uffff\1\104";
     static final String DFA12_acceptS =
-        "\2\uffff\1\2\1\1\2\uffff";
+        "\2\uffff\1\2\1\uffff\1\1\1\uffff";
     static final String DFA12_specialS =
         "\6\uffff}>";
     static final String[] DFA12_transitionS = {
             "\12\2\3\uffff\1\2\1\uffff\1\2\6\uffff\1\2\2\uffff\5\2\1\1\1"+
-            "\2\2\uffff\3\2\1\uffff\1\2\4\uffff\7\2",
-            "\12\3\3\uffff\1\3\1\uffff\1\3\6\uffff\1\3\2\uffff\7\3\1\uffff"+
-            "\1\2\3\3\1\uffff\1\3\2\uffff\1\4\1\uffff\7\3\14\uffff\1\2\1"+
-            "\3",
+            "\2\2\uffff\4\2\2\uffff\1\2\4\uffff\7\2",
+            "\12\4\3\uffff\1\4\1\uffff\1\4\6\uffff\1\4\2\uffff\7\4\1\uffff"+
+            "\1\2\4\4\2\uffff\1\4\2\uffff\1\3\1\uffff\7\4\14\uffff\1\2\1"+
+            "\4",
             "",
+            "\1\5",
             "",
-            "\1\5",
-            "\12\3\3\uffff\1\3\1\uffff\1\3\6\uffff\1\3\2\uffff\7\3\1\uffff"+
-            "\1\2\3\3\1\uffff\1\3\2\uffff\1\4\1\uffff\7\3\14\uffff\1\2"
+            "\12\4\3\uffff\1\4\1\uffff\1\4\6\uffff\1\4\2\uffff\7\4\1\uffff"+
+            "\1\2\4\4\2\uffff\1\4\2\uffff\1\3\1\uffff\7\4\14\uffff\1\2"
     };
 
     static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS);
@@ -6503,14 +6518,14 @@
     }
  
 
-    public static final BitSet FOLLOW_64_in_opt_semicolon46 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_66_in_opt_semicolon46 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_prolog_in_compilation_unit58 = new BitSet(new long[]{0x0000000000001BC0L});
     public static final BitSet FOLLOW_statement_in_compilation_unit65 = new BitSet(new long[]{0x0000000000001BC2L});
-    public static final BitSet FOLLOW_package_statement_in_prolog90 = new BitSet(new long[]{0x000000001FEB4012L,0x0000000000000004L});
-    public static final BitSet FOLLOW_ATTRIBUTES_in_prolog105 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_65_in_prolog107 = new BitSet(new long[]{0x000000001FEB4002L,0x0000000000000004L});
-    public static final BitSet FOLLOW_66_in_prolog116 = new BitSet(new long[]{0x000000001FEB4000L});
-    public static final BitSet FOLLOW_rule_attribute_in_prolog121 = new BitSet(new long[]{0x000000001FEB4002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_package_statement_in_prolog90 = new BitSet(new long[]{0x000000001FEB4012L,0x0000000000000010L});
+    public static final BitSet FOLLOW_ATTRIBUTES_in_prolog105 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
+    public static final BitSet FOLLOW_67_in_prolog107 = new BitSet(new long[]{0x000000001FEB4002L,0x0000000000000010L});
+    public static final BitSet FOLLOW_68_in_prolog116 = new BitSet(new long[]{0x000000001FEB4000L});
+    public static final BitSet FOLLOW_rule_attribute_in_prolog121 = new BitSet(new long[]{0x000000001FEB4002L,0x0000000000000010L});
     public static final BitSet FOLLOW_function_import_statement_in_statement150 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_import_statement_in_statement156 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_global_in_statement162 = new BitSet(new long[]{0x0000000000000002L});
@@ -6519,58 +6534,58 @@
     public static final BitSet FOLLOW_rule_in_statement191 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_query_in_statement203 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_PACKAGE_in_package_statement232 = new BitSet(new long[]{0x0000000400000000L});
-    public static final BitSet FOLLOW_dotted_name_in_package_statement236 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_dotted_name_in_package_statement236 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
     public static final BitSet FOLLOW_opt_semicolon_in_package_statement239 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_IMPORT_in_import_statement271 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
-    public static final BitSet FOLLOW_import_name_in_import_statement294 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_IMPORT_in_import_statement271 = new BitSet(new long[]{0x00FE13CFE40A3FF0L});
+    public static final BitSet FOLLOW_import_name_in_import_statement294 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
     public static final BitSet FOLLOW_opt_semicolon_in_import_statement297 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_IMPORT_in_function_import_statement323 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_FUNCTION_in_function_import_statement325 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
-    public static final BitSet FOLLOW_import_name_in_function_import_statement348 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_FUNCTION_in_function_import_statement325 = new BitSet(new long[]{0x00FE13CFE40A3FF0L});
+    public static final BitSet FOLLOW_import_name_in_function_import_statement348 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
     public static final BitSet FOLLOW_opt_semicolon_in_function_import_statement351 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_import_name379 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000018L});
-    public static final BitSet FOLLOW_67_in_import_name391 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
-    public static final BitSet FOLLOW_identifier_in_import_name395 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000018L});
-    public static final BitSet FOLLOW_68_in_import_name419 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_import_name379 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000060L});
+    public static final BitSet FOLLOW_69_in_import_name391 = new BitSet(new long[]{0x00FE13CFE40A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_import_name395 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000060L});
+    public static final BitSet FOLLOW_70_in_import_name419 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_GLOBAL_in_global455 = new BitSet(new long[]{0x0000000400000000L});
-    public static final BitSet FOLLOW_dotted_name_in_global466 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
-    public static final BitSet FOLLOW_identifier_in_global478 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_dotted_name_in_global466 = new BitSet(new long[]{0x00FE13CFE40A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_global478 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
     public static final BitSet FOLLOW_opt_semicolon_in_global480 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FUNCTION_in_function507 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
-    public static final BitSet FOLLOW_dotted_name_in_function512 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
+    public static final BitSet FOLLOW_FUNCTION_in_function507 = new BitSet(new long[]{0x00FE13CFE40A3FF0L});
+    public static final BitSet FOLLOW_dotted_name_in_function512 = new BitSet(new long[]{0x00FE13CFE40A3FF0L});
     public static final BitSet FOLLOW_identifier_in_function519 = new BitSet(new long[]{0x0000001000000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_function528 = new BitSet(new long[]{0x003F85EFE40A3FF0L});
-    public static final BitSet FOLLOW_dotted_name_in_function538 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
-    public static final BitSet FOLLOW_argument_in_function545 = new BitSet(new long[]{0x0000002000000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_66_in_function559 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
-    public static final BitSet FOLLOW_dotted_name_in_function564 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
-    public static final BitSet FOLLOW_argument_in_function571 = new BitSet(new long[]{0x0000002000000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_function595 = new BitSet(new long[]{0x0000080000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_function528 = new BitSet(new long[]{0x00FE13EFE40A3FF0L});
+    public static final BitSet FOLLOW_dotted_name_in_function538 = new BitSet(new long[]{0x00FE13CFE40A3FF0L});
+    public static final BitSet FOLLOW_argument_in_function545 = new BitSet(new long[]{0x0000002000000000L,0x0000000000000010L});
+    public static final BitSet FOLLOW_68_in_function559 = new BitSet(new long[]{0x00FE13CFE40A3FF0L});
+    public static final BitSet FOLLOW_dotted_name_in_function564 = new BitSet(new long[]{0x00FE13CFE40A3FF0L});
+    public static final BitSet FOLLOW_argument_in_function571 = new BitSet(new long[]{0x0000002000000000L,0x0000000000000010L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_function595 = new BitSet(new long[]{0x0000200000000000L});
     public static final BitSet FOLLOW_curly_chunk_in_function601 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_QUERY_in_query633 = new BitSet(new long[]{0x0000000400008000L});
-    public static final BitSet FOLLOW_name_in_query637 = new BitSet(new long[]{0x001E001400000400L});
+    public static final BitSet FOLLOW_name_in_query637 = new BitSet(new long[]{0x0078001400000400L});
     public static final BitSet FOLLOW_normal_lhs_block_in_query650 = new BitSet(new long[]{0x0000000000000400L});
     public static final BitSet FOLLOW_END_in_query667 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_TEMPLATE_in_template697 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
-    public static final BitSet FOLLOW_identifier_in_template701 = new BitSet(new long[]{0x0000000400000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_TEMPLATE_in_template697 = new BitSet(new long[]{0x00FE13CFE40A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_template701 = new BitSet(new long[]{0x0000000400000000L,0x0000000000000004L});
     public static final BitSet FOLLOW_opt_semicolon_in_template703 = new BitSet(new long[]{0x0000000400000000L});
     public static final BitSet FOLLOW_template_slot_in_template718 = new BitSet(new long[]{0x0000000400000400L});
-    public static final BitSet FOLLOW_END_in_template735 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_END_in_template735 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
     public static final BitSet FOLLOW_opt_semicolon_in_template737 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_dotted_name_in_template_slot783 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
-    public static final BitSet FOLLOW_identifier_in_template_slot801 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_dotted_name_in_template_slot783 = new BitSet(new long[]{0x00FE13CFE40A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_template_slot801 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
     public static final BitSet FOLLOW_opt_semicolon_in_template_slot803 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_RULE_in_rule836 = new BitSet(new long[]{0x0000000400008000L});
-    public static final BitSet FOLLOW_name_in_rule840 = new BitSet(new long[]{0x002000001FEB6010L,0x0000000000000004L});
-    public static final BitSet FOLLOW_rule_attributes_in_rule849 = new BitSet(new long[]{0x0020000000002000L});
-    public static final BitSet FOLLOW_WHEN_in_rule858 = new BitSet(new long[]{0x003E001400000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_65_in_rule860 = new BitSet(new long[]{0x003E001400000000L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_rule878 = new BitSet(new long[]{0x0020000000000000L});
+    public static final BitSet FOLLOW_name_in_rule840 = new BitSet(new long[]{0x008000001FEB6010L,0x0000000000000010L});
+    public static final BitSet FOLLOW_rule_attributes_in_rule849 = new BitSet(new long[]{0x0080000000002000L});
+    public static final BitSet FOLLOW_WHEN_in_rule858 = new BitSet(new long[]{0x00F8001400000000L,0x0000000000000008L});
+    public static final BitSet FOLLOW_67_in_rule860 = new BitSet(new long[]{0x00F8001400000000L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_rule878 = new BitSet(new long[]{0x0080000000000000L});
     public static final BitSet FOLLOW_rhs_chunk_in_rule899 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ATTRIBUTES_in_rule_attributes920 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_65_in_rule_attributes922 = new BitSet(new long[]{0x000000001FEB4002L,0x0000000000000004L});
-    public static final BitSet FOLLOW_66_in_rule_attributes931 = new BitSet(new long[]{0x000000001FEB4000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes936 = new BitSet(new long[]{0x000000001FEB4002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_ATTRIBUTES_in_rule_attributes920 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
+    public static final BitSet FOLLOW_67_in_rule_attributes922 = new BitSet(new long[]{0x000000001FEB4002L,0x0000000000000010L});
+    public static final BitSet FOLLOW_68_in_rule_attributes931 = new BitSet(new long[]{0x000000001FEB4000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes936 = new BitSet(new long[]{0x000000001FEB4002L,0x0000000000000010L});
     public static final BitSet FOLLOW_salience_in_rule_attribute977 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_no_loop_in_rule_attribute987 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_agenda_group_in_rule_attribute998 = new BitSet(new long[]{0x0000000000000002L});
@@ -6610,29 +6625,29 @@
     public static final BitSet FOLLOW_LOCK_ON_ACTIVE_in_lock_on_active1652 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_LOCK_ON_ACTIVE_in_lock_on_active1680 = new BitSet(new long[]{0x0000000000040000L});
     public static final BitSet FOLLOW_BOOL_in_lock_on_active1684 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_in_normal_lhs_block1722 = new BitSet(new long[]{0x001E001400000002L});
+    public static final BitSet FOLLOW_lhs_in_normal_lhs_block1722 = new BitSet(new long[]{0x0078001400000002L});
     public static final BitSet FOLLOW_lhs_or_in_lhs1759 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_fact_binding_in_lhs_pattern1787 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_fact_in_lhs_pattern1796 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_from_source_in_from_statement1823 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_from_source1865 = new BitSet(new long[]{0x0000001000000002L,0x0000000000000008L});
-    public static final BitSet FOLLOW_paren_chunk_in_from_source1876 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000008L});
+    public static final BitSet FOLLOW_identifier_in_from_source1865 = new BitSet(new long[]{0x0000001000000002L,0x0000000000000020L});
+    public static final BitSet FOLLOW_paren_chunk_in_from_source1876 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
     public static final BitSet FOLLOW_expression_chain_in_from_source1890 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_67_in_expression_chain1915 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
-    public static final BitSet FOLLOW_identifier_in_expression_chain1919 = new BitSet(new long[]{0x0000201000000002L,0x0000000000000008L});
-    public static final BitSet FOLLOW_square_chunk_in_expression_chain1950 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000008L});
-    public static final BitSet FOLLOW_paren_chunk_in_expression_chain1984 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000008L});
+    public static final BitSet FOLLOW_69_in_expression_chain1915 = new BitSet(new long[]{0x00FE13CFE40A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_expression_chain1919 = new BitSet(new long[]{0x0000801000000002L,0x0000000000000020L});
+    public static final BitSet FOLLOW_square_chunk_in_expression_chain1950 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_chain1984 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
     public static final BitSet FOLLOW_expression_chain_in_expression_chain2005 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_ACCUMULATE_in_accumulate_statement2046 = new BitSet(new long[]{0x0000001000000000L});
     public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement2056 = new BitSet(new long[]{0x0000000400000000L});
-    public static final BitSet FOLLOW_lhs_pattern_in_accumulate_statement2060 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_66_in_accumulate_statement2062 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_lhs_pattern_in_accumulate_statement2060 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
+    public static final BitSet FOLLOW_68_in_accumulate_statement2062 = new BitSet(new long[]{0x0000000040000000L});
     public static final BitSet FOLLOW_INIT_in_accumulate_statement2071 = new BitSet(new long[]{0x0000001000000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement2075 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_66_in_accumulate_statement2078 = new BitSet(new long[]{0x0000000080000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement2075 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
+    public static final BitSet FOLLOW_68_in_accumulate_statement2078 = new BitSet(new long[]{0x0000000080000000L});
     public static final BitSet FOLLOW_ACTION_in_accumulate_statement2087 = new BitSet(new long[]{0x0000001000000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement2091 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_66_in_accumulate_statement2094 = new BitSet(new long[]{0x0000000100000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement2091 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
+    public static final BitSet FOLLOW_68_in_accumulate_statement2094 = new BitSet(new long[]{0x0000000100000000L});
     public static final BitSet FOLLOW_RESULT_in_accumulate_statement2103 = new BitSet(new long[]{0x0000001000000000L});
     public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement2107 = new BitSet(new long[]{0x0000002000000000L});
     public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement2112 = new BitSet(new long[]{0x0000000000000002L});
@@ -6640,140 +6655,141 @@
     public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement2165 = new BitSet(new long[]{0x0000000400000000L});
     public static final BitSet FOLLOW_lhs_pattern_in_collect_statement2169 = new BitSet(new long[]{0x0000002000000000L});
     public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement2173 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_fact_binding2207 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_65_in_fact_binding2209 = new BitSet(new long[]{0x0000001400000000L});
+    public static final BitSet FOLLOW_ID_in_fact_binding2207 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
+    public static final BitSet FOLLOW_67_in_fact_binding2209 = new BitSet(new long[]{0x0000001400000000L});
     public static final BitSet FOLLOW_fact_expression_in_fact_binding2222 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_LEFT_PAREN_in_fact_expression2254 = new BitSet(new long[]{0x0000001400000000L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression2258 = new BitSet(new long[]{0x0000002000000000L});
     public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_expression2261 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_fact_expression2272 = new BitSet(new long[]{0x0000000800000002L,0x0000000000000020L});
+    public static final BitSet FOLLOW_fact_in_fact_expression2272 = new BitSet(new long[]{0x0000000800000002L,0x0000000000000080L});
     public static final BitSet FOLLOW_set_in_fact_expression2284 = new BitSet(new long[]{0x0000000400000000L});
-    public static final BitSet FOLLOW_fact_in_fact_expression2302 = new BitSet(new long[]{0x0000000800000002L,0x0000000000000020L});
+    public static final BitSet FOLLOW_fact_in_fact_expression2302 = new BitSet(new long[]{0x0000000800000002L,0x0000000000000080L});
     public static final BitSet FOLLOW_dotted_name_in_fact2363 = new BitSet(new long[]{0x0000001000000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact2377 = new BitSet(new long[]{0x003F85FFE40A3FF0L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact2377 = new BitSet(new long[]{0x00FE13FFE40A3FF0L});
     public static final BitSet FOLLOW_constraints_in_fact2387 = new BitSet(new long[]{0x0000002000000000L});
     public static final BitSet FOLLOW_RIGHT_PAREN_in_fact2400 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_constraint_in_constraints2421 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
-    public static final BitSet FOLLOW_predicate_in_constraints2424 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
-    public static final BitSet FOLLOW_66_in_constraints2432 = new BitSet(new long[]{0x003F85DFE40A3FF0L});
-    public static final BitSet FOLLOW_constraint_in_constraints2435 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
-    public static final BitSet FOLLOW_predicate_in_constraints2438 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_constraint2467 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_65_in_constraint2469 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
-    public static final BitSet FOLLOW_identifier_in_constraint2490 = new BitSet(new long[]{0x000001C000000002L,0x0000000000007F00L});
-    public static final BitSet FOLLOW_constraint_expression_in_constraint2508 = new BitSet(new long[]{0x0000000000000002L,0x00000000000000C0L});
-    public static final BitSet FOLLOW_set_in_constraint2529 = new BitSet(new long[]{0x000001C000000000L,0x0000000000007E00L});
-    public static final BitSet FOLLOW_constraint_expression_in_constraint2549 = new BitSet(new long[]{0x0000000000000002L,0x00000000000000C0L});
-    public static final BitSet FOLLOW_72_in_constraint2577 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_constraint_in_constraints2421 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
+    public static final BitSet FOLLOW_predicate_in_constraints2424 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
+    public static final BitSet FOLLOW_68_in_constraints2432 = new BitSet(new long[]{0x00FE13DFE40A3FF0L});
+    public static final BitSet FOLLOW_constraint_in_constraints2435 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
+    public static final BitSet FOLLOW_predicate_in_constraints2438 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
+    public static final BitSet FOLLOW_ID_in_constraint2467 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
+    public static final BitSet FOLLOW_67_in_constraint2469 = new BitSet(new long[]{0x00FE13CFE40A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_constraint2490 = new BitSet(new long[]{0x000007C000000002L,0x000000000001FC00L});
+    public static final BitSet FOLLOW_constraint_expression_in_constraint2508 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000300L});
+    public static final BitSet FOLLOW_set_in_constraint2529 = new BitSet(new long[]{0x000007C000000000L,0x000000000001F800L});
+    public static final BitSet FOLLOW_constraint_expression_in_constraint2549 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000300L});
+    public static final BitSet FOLLOW_74_in_constraint2577 = new BitSet(new long[]{0x0000001000000000L});
     public static final BitSet FOLLOW_predicate_in_constraint2579 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_set_in_constraint_expression2614 = new BitSet(new long[]{0x0000061400148000L});
-    public static final BitSet FOLLOW_ID_in_constraint_expression2683 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enum_constraint_in_constraint_expression2699 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_constraint_in_constraint_expression2722 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_retval_constraint_in_constraint_expression2736 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_literal_constraint2775 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INT_in_literal_constraint2786 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FLOAT_in_literal_constraint2799 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BOOL_in_literal_constraint2810 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_literal_constraint2822 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_enum_constraint2857 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-    public static final BitSet FOLLOW_67_in_enum_constraint2863 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
-    public static final BitSet FOLLOW_identifier_in_enum_constraint2867 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000008L});
-    public static final BitSet FOLLOW_paren_chunk_in_predicate2909 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk2958 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000FFFFL});
-    public static final BitSet FOLLOW_set_in_paren_chunk2974 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000FFFFL});
-    public static final BitSet FOLLOW_paren_chunk_in_paren_chunk2998 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000FFFFL});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk3035 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk3086 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000FFFFL});
-    public static final BitSet FOLLOW_set_in_curly_chunk3102 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000FFFFL});
-    public static final BitSet FOLLOW_curly_chunk_in_curly_chunk3126 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000FFFFL});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk3163 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk3226 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000FFFFL});
-    public static final BitSet FOLLOW_set_in_square_chunk3242 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000FFFFL});
-    public static final BitSet FOLLOW_square_chunk_in_square_chunk3266 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000FFFFL});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk3303 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_retval_constraint3348 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or3376 = new BitSet(new long[]{0x0000000800000002L,0x0000000000000020L});
-    public static final BitSet FOLLOW_set_in_lhs_or3384 = new BitSet(new long[]{0x001E001400000000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or3395 = new BitSet(new long[]{0x0000000800000002L,0x0000000000000020L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and3431 = new BitSet(new long[]{0x0000800000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_set_in_lhs_and3439 = new BitSet(new long[]{0x001E001400000000L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and3450 = new BitSet(new long[]{0x0000800000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary3487 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-    public static final BitSet FOLLOW_lhs_not_in_lhs_unary3495 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary3503 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_unary3511 = new BitSet(new long[]{0x0001000000000002L,0x0000000000000001L});
-    public static final BitSet FOLLOW_FROM_in_lhs_unary3527 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
-    public static final BitSet FOLLOW_accumulate_statement_in_lhs_unary3555 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-    public static final BitSet FOLLOW_collect_statement_in_lhs_unary3584 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-    public static final BitSet FOLLOW_from_statement_in_lhs_unary3619 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary3658 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary3666 = new BitSet(new long[]{0x001E001400000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_unary3670 = new BitSet(new long[]{0x0000002000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary3672 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-    public static final BitSet FOLLOW_opt_semicolon_in_lhs_unary3682 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EXISTS_in_lhs_exist3706 = new BitSet(new long[]{0x0000001400000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist3726 = new BitSet(new long[]{0x001E001400000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_exist3730 = new BitSet(new long[]{0x0000002000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist3762 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_exist3812 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NOT_in_lhs_not3866 = new BitSet(new long[]{0x0000001400000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not3879 = new BitSet(new long[]{0x001E001400000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_not3883 = new BitSet(new long[]{0x0000002000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not3916 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_not3953 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EVAL_in_lhs_eval4001 = new BitSet(new long[]{0x0000001000000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval4005 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FORALL_in_lhs_forall4034 = new BitSet(new long[]{0x0000001000000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall4036 = new BitSet(new long[]{0x0000000400000000L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_forall4040 = new BitSet(new long[]{0x0000000400000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_66_in_lhs_forall4054 = new BitSet(new long[]{0x0000000400000000L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_forall4060 = new BitSet(new long[]{0x0000002400000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall4075 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_dotted_name4106 = new BitSet(new long[]{0x0000200000000002L,0x0000000000000008L});
-    public static final BitSet FOLLOW_67_in_dotted_name4118 = new BitSet(new long[]{0x003F85CFE40A3FF0L});
-    public static final BitSet FOLLOW_identifier_in_dotted_name4122 = new BitSet(new long[]{0x0000200000000002L,0x0000000000000008L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_dotted_name4144 = new BitSet(new long[]{0x0000400000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dotted_name4148 = new BitSet(new long[]{0x0000200000000002L});
-    public static final BitSet FOLLOW_identifier_in_argument4187 = new BitSet(new long[]{0x0000200000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_argument4193 = new BitSet(new long[]{0x0000400000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_argument4195 = new BitSet(new long[]{0x0000200000000002L});
-    public static final BitSet FOLLOW_THEN_in_rhs_chunk4239 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000FFFFL});
-    public static final BitSet FOLLOW_set_in_rhs_chunk4251 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000000FFFFL});
-    public static final BitSet FOLLOW_END_in_rhs_chunk4288 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_name4332 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_name4351 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_identifier4389 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_PACKAGE_in_identifier4402 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FUNCTION_in_identifier4409 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_GLOBAL_in_identifier4416 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_IMPORT_in_identifier4423 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_RULE_in_identifier4432 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_QUERY_in_identifier4439 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_TEMPLATE_in_identifier4460 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ATTRIBUTES_in_identifier4488 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ENABLED_in_identifier4514 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SALIENCE_in_identifier4543 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DURATION_in_identifier4565 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FROM_in_identifier4587 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ACCUMULATE_in_identifier4616 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INIT_in_identifier4638 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ACTION_in_identifier4667 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_RESULT_in_identifier4696 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_COLLECT_in_identifier4725 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_OR_in_identifier4754 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_AND_in_identifier4783 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_CONTAINS_in_identifier4812 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EXCLUDES_in_identifier4834 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_MATCHES_in_identifier4856 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_identifier4885 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EXISTS_in_identifier4914 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NOT_in_identifier4943 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EVAL_in_identifier4972 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FORALL_in_identifier5001 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_WHEN_in_identifier5039 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_THEN_in_identifier5071 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_END_in_identifier5100 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_set_in_constraint_expression2614 = new BitSet(new long[]{0x0000181400148000L});
+    public static final BitSet FOLLOW_ID_in_constraint_expression2689 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enum_constraint_in_constraint_expression2705 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_constraint_in_constraint_expression2728 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_retval_constraint_in_constraint_expression2742 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_literal_constraint2781 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_literal_constraint2792 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_literal_constraint2805 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_literal_constraint2816 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_literal_constraint2828 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_enum_constraint2863 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+    public static final BitSet FOLLOW_69_in_enum_constraint2869 = new BitSet(new long[]{0x00FE13CFE40A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_enum_constraint2873 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
+    public static final BitSet FOLLOW_paren_chunk_in_predicate2915 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk2964 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000003FFFFL});
+    public static final BitSet FOLLOW_set_in_paren_chunk2980 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000003FFFFL});
+    public static final BitSet FOLLOW_paren_chunk_in_paren_chunk3004 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000003FFFFL});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk3041 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk3092 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000003FFFFL});
+    public static final BitSet FOLLOW_set_in_curly_chunk3108 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000003FFFFL});
+    public static final BitSet FOLLOW_curly_chunk_in_curly_chunk3132 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000003FFFFL});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk3169 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk3232 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000003FFFFL});
+    public static final BitSet FOLLOW_set_in_square_chunk3248 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000003FFFFL});
+    public static final BitSet FOLLOW_square_chunk_in_square_chunk3272 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000003FFFFL});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk3309 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_retval_constraint3354 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or3382 = new BitSet(new long[]{0x0000000800000002L,0x0000000000000080L});
+    public static final BitSet FOLLOW_set_in_lhs_or3390 = new BitSet(new long[]{0x0078001400000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or3401 = new BitSet(new long[]{0x0000000800000002L,0x0000000000000080L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and3437 = new BitSet(new long[]{0x0002000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_set_in_lhs_and3445 = new BitSet(new long[]{0x0078001400000000L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and3456 = new BitSet(new long[]{0x0002000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary3493 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_not_in_lhs_unary3501 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary3509 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_unary3517 = new BitSet(new long[]{0x0004000000000002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_FROM_in_lhs_unary3533 = new BitSet(new long[]{0x00FE13CFE40A3FF0L});
+    public static final BitSet FOLLOW_accumulate_statement_in_lhs_unary3561 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_collect_statement_in_lhs_unary3590 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_from_statement_in_lhs_unary3625 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary3664 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary3672 = new BitSet(new long[]{0x0078001400000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_unary3676 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary3678 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_opt_semicolon_in_lhs_unary3688 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EXISTS_in_lhs_exist3712 = new BitSet(new long[]{0x0000001400000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist3732 = new BitSet(new long[]{0x0078001400000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_exist3736 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist3768 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_exist3818 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NOT_in_lhs_not3872 = new BitSet(new long[]{0x0000001400000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not3885 = new BitSet(new long[]{0x0078001400000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_not3889 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not3922 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_not3959 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EVAL_in_lhs_eval4007 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval4011 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FORALL_in_lhs_forall4040 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall4042 = new BitSet(new long[]{0x0000000400000000L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_forall4046 = new BitSet(new long[]{0x0000000400000000L,0x0000000000000010L});
+    public static final BitSet FOLLOW_68_in_lhs_forall4060 = new BitSet(new long[]{0x0000000400000000L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_forall4066 = new BitSet(new long[]{0x0000002400000000L,0x0000000000000010L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall4081 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_dotted_name4112 = new BitSet(new long[]{0x0000800000000002L,0x0000000000000020L});
+    public static final BitSet FOLLOW_69_in_dotted_name4124 = new BitSet(new long[]{0x00FE13CFE40A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_dotted_name4128 = new BitSet(new long[]{0x0000800000000002L,0x0000000000000020L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_dotted_name4150 = new BitSet(new long[]{0x0001000000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dotted_name4154 = new BitSet(new long[]{0x0000800000000002L});
+    public static final BitSet FOLLOW_identifier_in_argument4193 = new BitSet(new long[]{0x0000800000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_argument4199 = new BitSet(new long[]{0x0001000000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_argument4201 = new BitSet(new long[]{0x0000800000000002L});
+    public static final BitSet FOLLOW_THEN_in_rhs_chunk4245 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000003FFFFL});
+    public static final BitSet FOLLOW_set_in_rhs_chunk4257 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000000003FFFFL});
+    public static final BitSet FOLLOW_END_in_rhs_chunk4294 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_name4338 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_name4357 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_identifier4395 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_PACKAGE_in_identifier4408 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FUNCTION_in_identifier4415 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_GLOBAL_in_identifier4422 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_IMPORT_in_identifier4429 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_in_identifier4438 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_QUERY_in_identifier4445 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_TEMPLATE_in_identifier4466 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ATTRIBUTES_in_identifier4494 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ENABLED_in_identifier4520 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SALIENCE_in_identifier4549 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DURATION_in_identifier4571 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FROM_in_identifier4593 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACCUMULATE_in_identifier4622 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INIT_in_identifier4644 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACTION_in_identifier4673 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RESULT_in_identifier4702 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COLLECT_in_identifier4731 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_OR_in_identifier4760 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AND_in_identifier4789 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_CONTAINS_in_identifier4818 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EXCLUDES_in_identifier4840 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_MEMBEROF_in_identifier4862 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_MATCHES_in_identifier4882 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_identifier4911 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EXISTS_in_identifier4940 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NOT_in_identifier4969 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EVAL_in_identifier4998 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FORALL_in_identifier5027 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_WHEN_in_identifier5065 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_THEN_in_identifier5097 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_END_in_identifier5126 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_function_import_statement_in_synpred7150 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_import_statement_in_synpred8156 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_paren_chunk_in_synpred421876 = new BitSet(new long[]{0x0000000000000002L});
@@ -6781,8 +6797,8 @@
     public static final BitSet FOLLOW_LEFT_PAREN_in_synpred451976 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_set_in_synpred492284 = new BitSet(new long[]{0x0000000400000000L});
     public static final BitSet FOLLOW_fact_in_synpred492302 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ACCUMULATE_in_synpred913546 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_COLLECT_in_synpred923575 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_set_in_synpred943605 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACCUMULATE_in_synpred933552 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COLLECT_in_synpred943581 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_set_in_synpred963611 = new BitSet(new long[]{0x0000000000000002L});
 
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2007-04-30 22:47:40 UTC (rev 11531)
@@ -998,7 +998,9 @@
 		|	'!='
 		|	CONTAINS
 		|	MATCHES
-		|       EXCLUDES
+		|	EXCLUDES
+		|	MEMBEROF
+		|	NOT_MEMBEROF
 		)	
 		(	bvc=ID
 			{
@@ -1471,6 +1473,7 @@
         |       t=AND	        
         |       t=CONTAINS 	
         |       t=EXCLUDES 	
+        |       t=MEMBEROF
         |       t=MATCHES         
         |       t=NULL	        
         |       t=EXISTS	        
@@ -1614,6 +1617,12 @@
 EXCLUDES 
 	:	'excludes';
 	
+MEMBEROF
+	:	'memberof';
+
+NOT_MEMBEROF
+	:	'nonmemberof';
+	
 MATCHES :	'matches';
 
 NULL	:	'null';

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -2491,6 +2491,29 @@
                       cheese.getObjectType() );
     }
 
+    public void testMemberof() throws Exception {
+        final String text = "Country( $cities : city )\nPerson( city memberof $cities )\n";
+        final AndDescr descrs = new AndDescr();
+        final CharStream charStream = new ANTLRStringStream( text );
+        final DRLLexer lexer = new DRLLexer( charStream );
+        final TokenStream tokenStream = new SwitchingCommonTokenStream( lexer );
+        final DRLParser parser = new DRLParser( tokenStream );
+        parser.setLineOffset( descrs.getLine() );
+        parser.normal_lhs_block( descrs );
+        if ( parser.hasErrors() ) {
+            System.err.println( parser.getErrorMessages() );
+        }
+        assertFalse( parser.hasErrors() );
+        
+        assertEquals( 2, descrs.getDescrs().size());
+        PatternDescr pat = (PatternDescr) descrs.getDescrs().get( 1 );
+        FieldConstraintDescr fieldConstr = (FieldConstraintDescr) pat.getDescrs().get( 0 );
+        VariableRestrictionDescr restr = (VariableRestrictionDescr) fieldConstr.getRestrictions().get( 0 );
+        
+        assertEquals( "memberof", restr.getEvaluator() );
+        assertEquals( "$cities", restr.getIdentifier() );
+    }
+
     private DRLParser parse(final String text) throws Exception {
         this.parser = newParser( newTokenStream( newLexer( newCharStream( text ) ) ) );
         return this.parser;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ArrayFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ArrayFactory.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ArrayFactory.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -16,8 +16,6 @@
  * limitations under the License.
  */
 
-import java.util.Arrays;
-
 import org.drools.base.BaseEvaluator;
 import org.drools.base.ValueType;
 import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
@@ -55,11 +53,17 @@
             return ArrayNotEqualEvaluator.INSTANCE;
         } else if ( operator == Operator.CONTAINS ) {
             return ArrayContainsEvaluator.INSTANCE;
+        } else if ( operator == Operator.EXCLUDES ) {
+            return ArrayExcludesEvaluator.INSTANCE;
+        } else if ( operator == Operator.MEMBEROF ) {
+            return ArrayMemberOfEvaluator.INSTANCE;
+        } else if ( operator == Operator.NOTMEMBEROF ) {
+            return ArrayNotMemberOfEvaluator.INSTANCE;
         } else {
             throw new RuntimeException( "Operator '" + operator + "' does not exist for ArrayEvaluator" );
         }
     }
-
+    
     static class ArrayEqualEvaluator extends BaseEvaluator {
         /**
          * 
@@ -194,24 +198,30 @@
                                 final FieldValue object2) {
             final Object value = object2.getValue();
             final Object[] array = (Object[]) extractor.getValue( object1 );
-            return Arrays.binarySearch( array,
-                                        value ) != -1;
+            if( array == null )
+                return false;
+            return ArrayUtils.search( array,
+                                        value ) >= 0;
         }
 
         public boolean evaluateCachedRight(final VariableContextEntry context,
                                            final Object left) {
             final Object value = context.declaration.getExtractor().getValue( left );
             final Object[] array = (Object[]) ((ObjectVariableContextEntry) context).right;
-            return Arrays.binarySearch( array,
-                                        value ) != -1;
+            if( array == null )
+                return false;
+            return ArrayUtils.search( array,
+                                        value ) >= 0;
         }
 
         public boolean evaluateCachedLeft(final VariableContextEntry context,
                                           final Object right) {
             final Object value = ((ObjectVariableContextEntry) context).left;
             final Object[] array = (Object[]) context.extractor.getValue( right );
-            return Arrays.binarySearch( array,
-                                        value ) != -1;
+            if( array == null )
+                return false;
+            return ArrayUtils.search( array,
+                                        value ) >= 0;
         }
 
         public boolean evaluate(final Extractor extractor1,
@@ -221,8 +231,10 @@
             final Object value = extractor2.getValue( object2 );
             final Object[] array = (Object[]) extractor1.getValue( object1 );
 
-            return Arrays.binarySearch( array,
-                                        value ) != -1;
+            if( array == null )
+                return false;
+            return ArrayUtils.search( array,
+                                        value ) >= 0;
         }
 
         public String toString() {
@@ -230,4 +242,296 @@
         }
     }
 
+    static class ArrayExcludesEvaluator extends BaseEvaluator {
+        /**
+         * 
+         */
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new ArrayExcludesEvaluator();
+
+        private ArrayExcludesEvaluator() {
+            super( ValueType.ARRAY_TYPE,
+                   Operator.EXCLUDES );
+        }
+
+        public boolean evaluate(final Extractor extractor,
+                                final Object object1,
+                                final FieldValue object2) {
+            final Object value = object2.getValue();
+            final Object[] array = (Object[]) extractor.getValue( object1 );
+            if( array == null )
+                return false;
+            return ArrayUtils.search( array,
+                                        value ) < 0;
+        }
+
+        public boolean evaluateCachedRight(final VariableContextEntry context,
+                                           final Object left) {
+            final Object value = context.declaration.getExtractor().getValue( left );
+            final Object[] array = (Object[]) ((ObjectVariableContextEntry) context).right;
+            if( array == null )
+                return false;
+            return ArrayUtils.search( array,
+                                        value ) < 0;
+        }
+
+        public boolean evaluateCachedLeft(final VariableContextEntry context,
+                                          final Object right) {
+            final Object value = ((ObjectVariableContextEntry) context).left;
+            final Object[] array = (Object[]) context.extractor.getValue( right );
+            if( array == null )
+                return false;
+            return ArrayUtils.search( array,
+                                        value ) < 0;
+        }
+
+        public boolean evaluate(final Extractor extractor1,
+                                final Object object1,
+                                final Extractor extractor2,
+                                final Object object2) {
+            final Object value = extractor2.getValue( object2 );
+            final Object[] array = (Object[]) extractor1.getValue( object1 );
+
+            if( array == null )
+                return false;
+            return ArrayUtils.search( array,
+                                        value ) < 0;
+        }
+
+        public String toString() {
+            return "Array excludes";
+        }
+    }
+
+    static class ArrayMemberOfEvaluator extends BaseEvaluator {
+        /**
+         * 
+         */
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new ArrayMemberOfEvaluator();
+
+        private ArrayMemberOfEvaluator() {
+            super( ValueType.ARRAY_TYPE,
+                   Operator.MEMBEROF );
+        }
+
+        public boolean evaluate(final Extractor extractor,
+                                final Object object1,
+                                final FieldValue object2) {
+            final Object[] array = (Object[]) object2.getValue();
+            final Object value = extractor.getValue( object1 );
+            if( array == null )
+                return false;
+            return ArrayUtils.search( array,
+                                        value ) >= 0;
+        }
+
+        public boolean evaluateCachedRight(final VariableContextEntry context,
+                                           final Object left) {
+            final Object[] array = (Object[]) context.declaration.getExtractor().getValue( left );
+            final Object value = ((ObjectVariableContextEntry) context).right;
+            if( array == null )
+                return false;
+            return ArrayUtils.search( array,
+                                        value ) >= 0;
+        }
+
+        public boolean evaluateCachedLeft(final VariableContextEntry context,
+                                          final Object right) {
+            final Object[] array = (Object[]) ((ObjectVariableContextEntry) context).left;
+            final Object value = context.extractor.getValue( right );
+            if( array == null )
+                return false;
+            return ArrayUtils.search( array,
+                                        value ) >= 0;
+        }
+
+        public boolean evaluate(final Extractor extractor1,
+                                final Object object1,
+                                final Extractor extractor2,
+                                final Object object2) {
+            final Object[] array = (Object[]) extractor2.getValue( object2 );
+            final Object value = extractor1.getValue( object1 );
+
+            if( array == null )
+                return false;
+            return ArrayUtils.search( array,
+                                        value ) >= 0;
+        }
+
+        public String toString() {
+            return "Array memberOf";
+        }
+    }
+
+    static class ArrayNotMemberOfEvaluator extends BaseEvaluator {
+        /**
+         * 
+         */
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new ArrayNotMemberOfEvaluator();
+
+        private ArrayNotMemberOfEvaluator() {
+            super( ValueType.ARRAY_TYPE,
+                   Operator.NOTMEMBEROF );
+        }
+
+        public boolean evaluate(final Extractor extractor,
+                                final Object object1,
+                                final FieldValue object2) {
+            final Object[] array = (Object[]) object2.getValue();
+            final Object value = extractor.getValue( object1 );
+            if( array == null )
+                return false;
+            return ArrayUtils.search( array,
+                                        value ) < 0;
+        }
+
+        public boolean evaluateCachedRight(final VariableContextEntry context,
+                                           final Object left) {
+            final Object[] array = (Object[]) context.declaration.getExtractor().getValue( left );
+            final Object value = ((ObjectVariableContextEntry) context).right;
+            if( array == null )
+                return false;
+            return ArrayUtils.search( array,
+                                        value ) < 0;
+        }
+
+        public boolean evaluateCachedLeft(final VariableContextEntry context,
+                                          final Object right) {
+            final Object[] array = (Object[]) ((ObjectVariableContextEntry) context).left;
+            final Object value = context.extractor.getValue( right );
+            if( array == null )
+                return false;
+            return ArrayUtils.search( array,
+                                        value ) < 0;
+        }
+
+        public boolean evaluate(final Extractor extractor1,
+                                final Object object1,
+                                final Extractor extractor2,
+                                final Object object2) {
+            final Object[] array = (Object[]) extractor2.getValue( object2 );
+            final Object value = extractor1.getValue( object1 );
+
+            if( array == null )
+                return false;
+            return ArrayUtils.search( array,
+                                        value ) < 0;
+        }
+
+        public String toString() {
+            return "Array not memberOf";
+        }
+    }
+    
+    /**
+     * Utility functions for arrays
+     * 
+     * @author etirelli
+     */
+    static final class ArrayUtils {
+        
+        public static final int search( Object[] array, Object value ) {
+            int index = -1;
+            for( int i = 0; i < array.length; i++ ) {
+                if(( array[i] == null && value == null ) ||
+                   ( array[i] != null && array[i].equals( value ) ) ) {
+                    index = i;
+                    break;
+                }
+            }
+            return index;
+        }
+
+        public static final int search( boolean[] array, boolean value ) {
+            int index = -1;
+            for( int i = 0; i < array.length; i++ ) {
+                if( array[i] == value ) {
+                    index = i;
+                    break;
+                }
+            }
+            return index;
+        }
+
+        public static final int search( byte[] array, byte value ) {
+            int index = -1;
+            for( int i = 0; i < array.length; i++ ) {
+                if( array[i] == value ) {
+                    index = i;
+                    break;
+                }
+            }
+            return index;
+        }
+
+        public static final int search( short[] array, short value ) {
+            int index = -1;
+            for( int i = 0; i < array.length; i++ ) {
+                if( array[i] == value ) {
+                    index = i;
+                    break;
+                }
+            }
+            return index;
+        }
+
+        public static final int search( int[] array, int value ) {
+            int index = -1;
+            for( int i = 0; i < array.length; i++ ) {
+                if( array[i] == value ) {
+                    index = i;
+                    break;
+                }
+            }
+            return index;
+        }
+
+        public static final int search( long[] array, long value ) {
+            int index = -1;
+            for( int i = 0; i < array.length; i++ ) {
+                if( array[i] == value ) {
+                    index = i;
+                    break;
+                }
+            }
+            return index;
+        }
+
+        public static final int search( float[] array, float value ) {
+            int index = -1;
+            for( int i = 0; i < array.length; i++ ) {
+                if( array[i] == value ) {
+                    index = i;
+                    break;
+                }
+            }
+            return index;
+        }
+
+        public static final int search( double[] array, double value ) {
+            int index = -1;
+            for( int i = 0; i < array.length; i++ ) {
+                if( array[i] == value ) {
+                    index = i;
+                    break;
+                }
+            }
+            return index;
+        }
+
+        public static final int search( char[] array, char value ) {
+            int index = -1;
+            for( int i = 0; i < array.length; i++ ) {
+                if( array[i] == value ) {
+                    index = i;
+                    break;
+                }
+            }
+            return index;
+        }
+
+    }
+    
 }
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BaseMemberOfEvaluator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BaseMemberOfEvaluator.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BaseMemberOfEvaluator.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -0,0 +1,84 @@
+/**
+ * 
+ */
+package org.drools.base.evaluators;
+
+import java.util.Collection;
+
+import org.drools.base.BaseEvaluator;
+import org.drools.base.ValueType;
+import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
+import org.drools.rule.VariableRestriction.VariableContextEntry;
+import org.drools.spi.Extractor;
+import org.drools.spi.FieldValue;
+
+/**
+ * This is a base class for MemberOf Evaluators
+ * 
+ * @author etirelli
+ */
+public abstract class BaseMemberOfEvaluator extends BaseEvaluator {
+
+    public BaseMemberOfEvaluator(ValueType type,
+                                          Operator operator) {
+        super( type,
+               operator );
+    }
+
+    public boolean evaluate(final Extractor extractor,
+                            final Object object1,
+                            final FieldValue object2) {
+        if( object2.isNull() ) {
+            return false;
+        } else if( ! object2.isCollectionField() ) {
+            throw new ClassCastException("Can't check if an attribute is member of an object of class "+object2.getValue().getClass() );
+        }
+        final Collection col = (Collection) object2.getValue();
+        final Object value = extractor.getValue( object1 ); 
+        return col.contains( value );
+    }
+
+    public boolean evaluateCachedRight(final VariableContextEntry context,
+                                       final Object left) {
+        final Object object = context.declaration.getExtractor().getValue( left );
+        if( object == null ) {
+            return false;  
+        } else if( ! ( object instanceof Collection ) ) {
+            throw new ClassCastException("Can't check if an attribute is member of an object of class "+object.getClass() );
+        }
+        final Collection col = (Collection) object;
+        final Object value = ((ObjectVariableContextEntry) context).right;
+        return col.contains( value );
+    }
+
+    public boolean evaluateCachedLeft(final VariableContextEntry context,
+                                      final Object right) {
+        final Object object = ((ObjectVariableContextEntry) context).left;
+        if( object == null ) {
+            return false;  
+        } else if( ! ( object instanceof Collection ) ) {
+            throw new ClassCastException("Can't check if an attribute is member of an object of class "+object.getClass() );
+        }
+        final Collection col = (Collection) object;
+        final Object value = context.extractor.getValue( right ); 
+        return col.contains( value );
+    }
+
+    public boolean evaluate(final Extractor extractor1,
+                            final Object object1,
+                            final Extractor extractor2,
+                            final Object object2) {
+        final Object object = extractor2.getValue( object2 );
+        if( object == null ) {
+            return false;  
+        } else if( ! ( object instanceof Collection ) ) {
+            throw new ClassCastException("Can't check if an attribute is member of an object of class "+object.getClass() );
+        }
+        final Collection col = (Collection) object;
+        final Object value = extractor1.getValue( object1 );
+        return col.contains( value );
+    }
+    
+    public abstract String toString();
+
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BaseNotMemberOfEvaluator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BaseNotMemberOfEvaluator.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BaseNotMemberOfEvaluator.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -0,0 +1,86 @@
+/**
+ * 
+ */
+package org.drools.base.evaluators;
+
+import java.util.Collection;
+
+import org.drools.base.BaseEvaluator;
+import org.drools.base.ValueType;
+import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
+import org.drools.rule.VariableRestriction.VariableContextEntry;
+import org.drools.spi.Extractor;
+import org.drools.spi.FieldValue;
+
+/**
+ * This is a base class for Not MemberOf Evaluators
+ * 
+ * @author etirelli
+ *
+ */
+public abstract class BaseNotMemberOfEvaluator extends BaseEvaluator {
+
+    public BaseNotMemberOfEvaluator(ValueType type,
+                                             Operator operator) {
+        super( type,
+               operator );
+    }
+
+    public boolean evaluate(final Extractor extractor,
+                            final Object object1,
+                            final FieldValue object2) {
+        if( object2.isNull() ) {
+            return false;
+        } else if( ! object2.isCollectionField() ) {
+            throw new ClassCastException("Can't check if an attribute is not member of an object of class "+object2.getValue().getClass() );
+        }
+        final Collection col = (Collection) object2.getValue();
+        final Object value = extractor.getValue( object1 ); 
+        return ! col.contains( value );
+    }
+
+    public boolean evaluateCachedRight(final VariableContextEntry context,
+                                       final Object left) {
+        final Object object = context.declaration.getExtractor().getValue( left );
+        if( object == null ) {
+            return false;  
+        } else if( ! ( object instanceof Collection ) ) {
+            throw new ClassCastException("Can't check if an attribute is not member of an object of class "+object.getClass() );
+        }
+        final Collection col = (Collection) object;
+        final Object value = ((ObjectVariableContextEntry) context).right;
+        return ! col.contains( value );
+    }
+
+    public boolean evaluateCachedLeft(final VariableContextEntry context,
+                                      final Object right) {
+        final Object object = ((ObjectVariableContextEntry) context).left;
+        if( object == null ) {
+            return false;  
+        } else if( ! ( object instanceof Collection ) ) {
+            throw new ClassCastException("Can't check if an attribute is not member of an object of class "+object.getClass() );
+        }
+        final Collection col = (Collection) object;
+        final Object value = context.extractor.getValue( right ); 
+        return ! col.contains( value );
+    }
+
+    public boolean evaluate(final Extractor extractor1,
+                            final Object object1,
+                            final Extractor extractor2,
+                            final Object object2) {
+        final Object object = extractor2.getValue( object2 );
+        if( object == null ) {
+            return false;  
+        } else if( ! ( object instanceof Collection ) ) {
+            throw new ClassCastException("Can't check if an attribute is not member of an object of class "+object.getClass() );
+        }
+        final Collection col = (Collection) object;
+        final Object value = extractor1.getValue( object1 );
+        return ! col.contains( value );
+    }
+
+    public abstract String toString();
+
+
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigDecimalFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigDecimalFactory.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigDecimalFactory.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -57,6 +57,10 @@
             return BigDecimalGreaterEvaluator.INSTANCE;
         } else if ( operator == Operator.GREATER_OR_EQUAL ) {
             return BigDecimalGreaterOrEqualEvaluator.INSTANCE;
+        } else if ( operator == Operator.MEMBEROF ) {
+            return BigDecimalMemberOfEvaluator.INSTANCE;
+        } else if ( operator == Operator.NOTMEMBEROF ) {
+            return BigDecimalNotMemberOfEvaluator.INSTANCE;
         } else {
             throw new RuntimeException( "Operator '" + operator + "' does not exist for BigDecimalEvaluator" );
         }
@@ -354,4 +358,36 @@
             return "BigDecimal >=";
         }
     }
+
+    static class BigDecimalMemberOfEvaluator extends BaseMemberOfEvaluator {
+
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new BigDecimalMemberOfEvaluator();
+
+        private BigDecimalMemberOfEvaluator() {
+            super( ValueType.BIG_DECIMAL_TYPE,
+                   Operator.MEMBEROF );
+        }
+
+        public String toString() {
+            return "BigDecimal memberOf";
+        }
+    }
+
+    static class BigDecimalNotMemberOfEvaluator extends BaseNotMemberOfEvaluator {
+        /**
+         * 
+         */
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new BigDecimalNotMemberOfEvaluator();
+
+        private BigDecimalNotMemberOfEvaluator() {
+            super( ValueType.BIG_DECIMAL_TYPE,
+                   Operator.NOTMEMBEROF );
+        }
+
+        public String toString() {
+            return "BigDecimal not memberOf";
+        }
+    }
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigIntegerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigIntegerFactory.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigIntegerFactory.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -57,6 +57,10 @@
             return BigIntegerGreaterEvaluator.INSTANCE;
         } else if ( operator == Operator.GREATER_OR_EQUAL ) {
             return BigIntegerGreaterOrEqualEvaluator.INSTANCE;
+        } else if ( operator == Operator.MEMBEROF ) {
+            return BigIntegerMemberOfEvaluator.INSTANCE;
+        } else if ( operator == Operator.NOTMEMBEROF ) {
+            return BigIntegerNotMemberOfEvaluator.INSTANCE;
         } else {
             throw new RuntimeException( "Operator '" + operator + "' does not exist for BigIntegerEvaluator" );
         }
@@ -353,4 +357,37 @@
             return "BigInteger >=";
         }
     }
+    
+    static class BigIntegerMemberOfEvaluator extends BaseMemberOfEvaluator {
+
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new BigIntegerMemberOfEvaluator();
+
+        private BigIntegerMemberOfEvaluator() {
+            super( ValueType.BIG_INTEGER_TYPE,
+                   Operator.MEMBEROF );
+        }
+
+        public String toString() {
+            return "BigInteger memberOf";
+        }
+    }
+
+    static class BigIntegerNotMemberOfEvaluator extends BaseNotMemberOfEvaluator {
+        /**
+         * 
+         */
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new BigIntegerNotMemberOfEvaluator();
+
+        private BigIntegerNotMemberOfEvaluator() {
+            super( ValueType.BIG_INTEGER_TYPE,
+                   Operator.NOTMEMBEROF );
+        }
+
+        public String toString() {
+            return "BigInteger not memberOf";
+        }
+    }
+    
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BooleanFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BooleanFactory.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BooleanFactory.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -47,6 +47,10 @@
             return BooleanEqualEvaluator.INSTANCE;
         } else if ( operator == Operator.NOT_EQUAL ) {
             return BooleanNotEqualEvaluator.INSTANCE;
+        } else if ( operator == Operator.MEMBEROF ) {
+            return BooleanMemberOfEvaluator.INSTANCE;
+        } else if ( operator == Operator.NOTMEMBEROF ) {
+            return BooleanNotMemberOfEvaluator.INSTANCE;
         } else {
             throw new RuntimeException( "Operator '" + operator + "' does not exist for BooleanEvaluator" );
         }
@@ -180,4 +184,34 @@
         }
     }
 
+    static class BooleanMemberOfEvaluator extends BaseMemberOfEvaluator {
+
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new BooleanMemberOfEvaluator();
+
+        private BooleanMemberOfEvaluator() {
+            super( ValueType.PBOOLEAN_TYPE,
+                   Operator.MEMBEROF );
+        }
+
+        public String toString() {
+            return "Boolean memberOf";
+        }
+    }
+
+    static class BooleanNotMemberOfEvaluator extends BaseNotMemberOfEvaluator {
+
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new BooleanNotMemberOfEvaluator();
+
+        private BooleanNotMemberOfEvaluator() {
+            super( ValueType.PBOOLEAN_TYPE,
+                   Operator.NOTMEMBEROF );
+        }
+
+        public String toString() {
+            return "Boolean not memberOf";
+        }
+    }
+    
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ByteFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ByteFactory.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ByteFactory.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -55,6 +55,10 @@
             return ByteGreaterEvaluator.INSTANCE;
         } else if ( operator == Operator.GREATER_OR_EQUAL ) {
             return ByteGreaterOrEqualEvaluator.INSTANCE;
+        } else if ( operator == Operator.MEMBEROF ) {
+            return ByteMemberOfEvaluator.INSTANCE;
+        } else if ( operator == Operator.NOTMEMBEROF ) {
+            return ByteNotMemberOfEvaluator.INSTANCE;
         } else {
             throw new RuntimeException( "Operator '" + operator + "' does not exist for ByteEvaluator" );
         }
@@ -349,4 +353,34 @@
         }
     }
 
+    static class ByteMemberOfEvaluator extends BaseMemberOfEvaluator {
+
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new ByteMemberOfEvaluator();
+
+        private ByteMemberOfEvaluator() {
+            super( ValueType.PBYTE_TYPE,
+                   Operator.MEMBEROF );
+        }
+
+        public String toString() {
+            return "Byte memberOf";
+        }
+    }
+
+    static class ByteNotMemberOfEvaluator extends BaseNotMemberOfEvaluator {
+
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new ByteNotMemberOfEvaluator();
+
+        private ByteNotMemberOfEvaluator() {
+            super( ValueType.PBYTE_TYPE,
+                   Operator.NOTMEMBEROF );
+        }
+
+        public String toString() {
+            return "Byte not memberOf";
+        }
+    }
+    
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/CharacterFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/CharacterFactory.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/CharacterFactory.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -18,6 +18,8 @@
 
 import org.drools.base.BaseEvaluator;
 import org.drools.base.ValueType;
+import org.drools.base.evaluators.IntegerFactory.IntegerMemberOfEvaluator;
+import org.drools.base.evaluators.IntegerFactory.IntegerNotMemberOfEvaluator;
 import org.drools.rule.VariableRestriction.LongVariableContextEntry;
 import org.drools.rule.VariableRestriction.VariableContextEntry;
 import org.drools.spi.Evaluator;
@@ -55,6 +57,10 @@
             return CharacterGreaterEvaluator.INSTANCE;
         } else if ( operator == Operator.GREATER_OR_EQUAL ) {
             return CharacterGreaterOrEqualEvaluator.INSTANCE;
+        } else if ( operator == Operator.MEMBEROF ) {
+            return CharacterMemberOfEvaluator.INSTANCE;
+        } else if ( operator == Operator.NOTMEMBEROF ) {
+            return CharacterNotMemberOfEvaluator.INSTANCE;
         } else {
             throw new RuntimeException( "Operator '" + operator + "' does not exist for CharacterEvaluator" );
         }
@@ -348,4 +354,34 @@
         }
     }
 
+    static class CharacterMemberOfEvaluator extends BaseMemberOfEvaluator {
+
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new CharacterMemberOfEvaluator();
+
+        private CharacterMemberOfEvaluator() {
+            super( ValueType.PCHAR_TYPE,
+                   Operator.MEMBEROF );
+        }
+
+        public String toString() {
+            return "Character memberOf";
+        }
+    }
+
+    static class CharacterNotMemberOfEvaluator extends BaseNotMemberOfEvaluator {
+
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new CharacterNotMemberOfEvaluator();
+
+        private CharacterNotMemberOfEvaluator() {
+            super( ValueType.PCHAR_TYPE,
+                   Operator.NOTMEMBEROF );
+        }
+
+        public String toString() {
+            return "Character not memberOf";
+        }
+    }
+    
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DateFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DateFactory.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DateFactory.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -74,6 +74,10 @@
             return DateGreaterEvaluator.INSTANCE;
         } else if ( operator == Operator.GREATER_OR_EQUAL ) {
             return DateGreaterOrEqualEvaluator.INSTANCE;
+        } else if ( operator == Operator.MEMBEROF ) {
+            return DateMemberOfEvaluator.INSTANCE;
+        } else if ( operator == Operator.NOTMEMBEROF ) {
+            return DateNotMemberOfEvaluator.INSTANCE;
         } else {
             throw new RuntimeException( "Operator '" + operator + "' does not exist for DateEvaluator" );
         }
@@ -428,6 +432,36 @@
         }
     }
 
+    static class DateMemberOfEvaluator extends BaseMemberOfEvaluator {
+
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new DateMemberOfEvaluator();
+
+        private DateMemberOfEvaluator() {
+            super( ValueType.DATE_TYPE,
+                   Operator.MEMBEROF );
+        }
+
+        public String toString() {
+            return "Date memberOf";
+        }
+    }
+
+    static class DateNotMemberOfEvaluator extends BaseNotMemberOfEvaluator {
+
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new DateNotMemberOfEvaluator();
+
+        private DateNotMemberOfEvaluator() {
+            super( ValueType.DATE_TYPE,
+                   Operator.NOTMEMBEROF );
+        }
+
+        public String toString() {
+            return "Date not memberOf";
+        }
+    }
+    
     /** Use the simple date formatter to read the date from a string */
     public static Date parseDate(final String input) {
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DoubleFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DoubleFactory.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DoubleFactory.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -55,6 +55,10 @@
             return DoubleGreaterEvaluator.INSTANCE;
         } else if ( operator == Operator.GREATER_OR_EQUAL ) {
             return DoubleGreaterOrEqualEvaluator.INSTANCE;
+        } else if ( operator == Operator.MEMBEROF ) {
+            return DoubleMemberOfEvaluator.INSTANCE;
+        } else if ( operator == Operator.NOTMEMBEROF ) {
+            return DoubleNotMemberOfEvaluator.INSTANCE;
         } else {
             throw new RuntimeException( "Operator '" + operator + "' does not exist for DoubleEvaluator" );
         }
@@ -369,4 +373,35 @@
             return "Double >=";
         }
     }
+    
+    static class DoubleMemberOfEvaluator extends BaseMemberOfEvaluator {
+
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new DoubleMemberOfEvaluator();
+
+        private DoubleMemberOfEvaluator() {
+            super( ValueType.PDOUBLE_TYPE,
+                   Operator.MEMBEROF );
+        }
+
+        public String toString() {
+            return "Double memberOf";
+        }
+    }
+
+    static class DoubleNotMemberOfEvaluator extends BaseNotMemberOfEvaluator {
+
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new DoubleNotMemberOfEvaluator();
+
+        private DoubleNotMemberOfEvaluator() {
+            super( ValueType.PDOUBLE_TYPE,
+                   Operator.NOTMEMBEROF );
+        }
+
+        public String toString() {
+            return "Double not memberOf";
+        }
+    }
+    
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/FloatFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/FloatFactory.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/FloatFactory.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -55,6 +55,10 @@
             return FloatGreaterEvaluator.INSTANCE;
         } else if ( operator == Operator.GREATER_OR_EQUAL ) {
             return FloatGreaterOrEqualEvaluator.INSTANCE;
+        } else if ( operator == Operator.MEMBEROF ) {
+            return FloatMemberOfEvaluator.INSTANCE;
+        } else if ( operator == Operator.NOTMEMBEROF ) {
+            return FloatNotMemberOfEvaluator.INSTANCE;
         } else {
             throw new RuntimeException( "Operator '" + operator + "' does not exist for FloatEvaluator" );
         }
@@ -369,4 +373,35 @@
             return "Float >=";
         }
     }
+    
+    static class FloatMemberOfEvaluator extends BaseMemberOfEvaluator {
+
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new FloatMemberOfEvaluator();
+
+        private FloatMemberOfEvaluator() {
+            super( ValueType.PFLOAT_TYPE,
+                   Operator.MEMBEROF );
+        }
+
+        public String toString() {
+            return "Float memberOf";
+        }
+    }
+
+    static class FloatNotMemberOfEvaluator extends BaseNotMemberOfEvaluator {
+
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new FloatNotMemberOfEvaluator();
+
+        private FloatNotMemberOfEvaluator() {
+            super( ValueType.PFLOAT_TYPE,
+                   Operator.NOTMEMBEROF );
+        }
+
+        public String toString() {
+            return "Float not memberOf";
+        }
+    }
+    
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/IntegerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/IntegerFactory.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/IntegerFactory.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -55,6 +55,10 @@
             return IntegerGreaterEvaluator.INSTANCE;
         } else if ( operator == Operator.GREATER_OR_EQUAL ) {
             return IntegerGreaterOrEqualEvaluator.INSTANCE;
+        } else if ( operator == Operator.MEMBEROF ) {
+            return IntegerMemberOfEvaluator.INSTANCE;
+        } else if ( operator == Operator.NOTMEMBEROF ) {
+            return IntegerNotMemberOfEvaluator.INSTANCE;
         } else {
             throw new RuntimeException( "Operator '" + operator + "' does not exist for IntegerEvaluator" );
         }
@@ -348,5 +352,36 @@
             return "Integer >=";
         }
     }
+    
+    static class IntegerMemberOfEvaluator extends BaseMemberOfEvaluator {
 
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new IntegerMemberOfEvaluator();
+
+        private IntegerMemberOfEvaluator() {
+            super( ValueType.PINTEGER_TYPE,
+                   Operator.MEMBEROF );
+        }
+
+        public String toString() {
+            return "Integer memberOf";
+        }
+    }
+
+    static class IntegerNotMemberOfEvaluator extends BaseNotMemberOfEvaluator {
+
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new IntegerNotMemberOfEvaluator();
+
+        private IntegerNotMemberOfEvaluator() {
+            super( ValueType.PINTEGER_TYPE,
+                   Operator.NOTMEMBEROF );
+        }
+
+        public String toString() {
+            return "Integer not memberOf";
+        }
+    }
+    
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/LongFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/LongFactory.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/LongFactory.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -55,6 +55,10 @@
             return LongGreaterEvaluator.INSTANCE;
         } else if ( operator == Operator.GREATER_OR_EQUAL ) {
             return LongGreaterOrEqualEvaluator.INSTANCE;
+        } else if ( operator == Operator.MEMBEROF ) {
+            return LongMemberOfEvaluator.INSTANCE;
+        } else if ( operator == Operator.NOTMEMBEROF ) {
+            return LongNotMemberOfEvaluator.INSTANCE;
         } else {
             throw new RuntimeException( "Operator '" + operator + "' does not exist for LongEvaluator" );
         }
@@ -348,4 +352,34 @@
         }
     }
 
+    static class LongMemberOfEvaluator extends BaseMemberOfEvaluator {
+
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new LongMemberOfEvaluator();
+
+        private LongMemberOfEvaluator() {
+            super( ValueType.PLONG_TYPE,
+                   Operator.MEMBEROF );
+        }
+
+        public String toString() {
+            return "Long memberOf";
+        }
+    }
+
+    static class LongNotMemberOfEvaluator extends BaseNotMemberOfEvaluator {
+
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new LongNotMemberOfEvaluator();
+
+        private LongNotMemberOfEvaluator() {
+            super( ValueType.PLONG_TYPE,
+                   Operator.NOTMEMBEROF );
+        }
+
+        public String toString() {
+            return "Long not memberOf";
+        }
+    }
+    
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ObjectFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ObjectFactory.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ObjectFactory.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -72,6 +72,10 @@
             return ObjectContainsEvaluator.INSTANCE;
         } else if ( operator == Operator.EXCLUDES ) {
             return ObjectExcludesEvaluator.INSTANCE;
+        } else if ( operator == Operator.MEMBEROF ) {
+            return ObjectMemberOfEvaluator.INSTANCE;
+        } else if ( operator == Operator.NOTMEMBEROF ) {
+            return ObjectNotMemberOfEvaluator.INSTANCE;
         } else {
             throw new RuntimeException( "Operator '" + operator + "' does not exist for ShortEvaluator" );
         }
@@ -463,4 +467,35 @@
         }
     }
 
+    static class ObjectMemberOfEvaluator extends BaseMemberOfEvaluator {
+
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new ObjectMemberOfEvaluator();
+
+        private ObjectMemberOfEvaluator() {
+            super( ValueType.OBJECT_TYPE,
+                   Operator.MEMBEROF );
+        }
+
+        public String toString() {
+            return "Object memberOf";
+        }
+    }
+
+    static class ObjectNotMemberOfEvaluator extends BaseNotMemberOfEvaluator {
+
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new ObjectNotMemberOfEvaluator();
+
+        private ObjectNotMemberOfEvaluator() {
+            super( ValueType.OBJECT_TYPE,
+                   Operator.NOTMEMBEROF );
+        }
+
+        public String toString() {
+            return "Object not memberOf";
+        }
+    }
+    
+    
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/Operator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/Operator.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/Operator.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -19,6 +19,8 @@
     public static final Operator CONTAINS         = new Operator( "contains" );
     public static final Operator MATCHES          = new Operator( "matches" );
     public static final Operator EXCLUDES         = new Operator( "excludes" );
+    public static final Operator MEMBEROF         = new Operator( "memberOf" );
+    public static final Operator NOTMEMBEROF      = new Operator( "not memberOf" );
 
     private String               operator;
 
@@ -49,6 +51,10 @@
             return Operator.MATCHES;
         } else if ( string.equals( "excludes" ) ) {
             return Operator.EXCLUDES;
+        } else if ( string.equals( "memberOf" ) ) {
+            return Operator.MEMBEROF;
+        } else if ( string.equals( "not memberOf" ) ) {
+            return Operator.NOTMEMBEROF;
         }
         throw new RuntimeDroolsException( "unable to determine operator for String [" + string + "]" );
     }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ShortFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ShortFactory.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ShortFactory.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -55,6 +55,10 @@
             return ShortGreaterEvaluator.INSTANCE;
         } else if ( operator == Operator.GREATER_OR_EQUAL ) {
             return ShortGreaterOrEqualEvaluator.INSTANCE;
+        } else if ( operator == Operator.MEMBEROF ) {
+            return ShortMemberOfEvaluator.INSTANCE;
+        } else if ( operator == Operator.NOTMEMBEROF ) {
+            return ShortNotMemberOfEvaluator.INSTANCE;
         } else {
             throw new RuntimeException( "Operator '" + operator + "' does not exist for ShortEvaluator" );
         }
@@ -348,4 +352,34 @@
         }
     }
 
+    static class ShortMemberOfEvaluator extends BaseMemberOfEvaluator {
+
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new ShortMemberOfEvaluator();
+
+        private ShortMemberOfEvaluator() {
+            super( ValueType.PSHORT_TYPE,
+                   Operator.MEMBEROF );
+        }
+
+        public String toString() {
+            return "Short memberOf";
+        }
+    }
+
+    static class ShortNotMemberOfEvaluator extends BaseNotMemberOfEvaluator {
+
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new ShortNotMemberOfEvaluator();
+
+        private ShortNotMemberOfEvaluator() {
+            super( ValueType.PSHORT_TYPE,
+                   Operator.NOTMEMBEROF );
+        }
+
+        public String toString() {
+            return "Short not memberOf";
+        }
+    }
+    
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/StringFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/StringFactory.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/StringFactory.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -56,6 +56,10 @@
             return StringNotEqualEvaluator.INSTANCE;
         } else if ( operator == Operator.MATCHES ) {
             return StringMatchesEvaluator.INSTANCE;
+        } else if ( operator == Operator.MEMBEROF ) {
+            return StringMemberOfEvaluator.INSTANCE;
+        } else if ( operator == Operator.NOTMEMBEROF ) {
+            return StringNotMemberOfEvaluator.INSTANCE;
         } else {
             throw new RuntimeException( "Operator '" + operator + "' does not exist for StringEvaluator" );
         }
@@ -235,5 +239,36 @@
             return "String matches";
         }
     }
+    
+    static class StringMemberOfEvaluator extends BaseMemberOfEvaluator {
 
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new StringMemberOfEvaluator();
+
+        private StringMemberOfEvaluator() {
+            super( ValueType.STRING_TYPE,
+                   Operator.MEMBEROF );
+        }
+
+        public String toString() {
+            return "String memberOf";
+        }
+    }
+
+    static class StringNotMemberOfEvaluator extends BaseNotMemberOfEvaluator {
+
+        private static final long     serialVersionUID = 320;
+        public final static Evaluator INSTANCE         = new StringNotMemberOfEvaluator();
+
+        private StringNotMemberOfEvaluator() {
+            super( ValueType.STRING_TYPE,
+                   Operator.NOTMEMBEROF );
+        }
+
+        public String toString() {
+            return "String not memberOf";
+        }
+    }
+    
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/field/BooleanFieldImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/field/BooleanFieldImpl.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/field/BooleanFieldImpl.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -110,4 +110,8 @@
         return false;
     }
 
+    public boolean isCollectionField() {
+        return false;
+    }
+
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/field/DoubleFieldImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/field/DoubleFieldImpl.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/field/DoubleFieldImpl.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -89,5 +89,9 @@
     public boolean isObjectField() {
         return false;
     }
+    
+    public boolean isCollectionField() {
+        return false;
+    }
 
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/field/LongFieldImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/field/LongFieldImpl.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/field/LongFieldImpl.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -89,4 +89,9 @@
     public boolean isObjectField() {
         return false;
     }
+
+    public boolean isCollectionField() {
+        return false;
+    }
+
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/field/ObjectFieldImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/field/ObjectFieldImpl.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/field/ObjectFieldImpl.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -16,6 +16,8 @@
  * limitations under the License.
  */
 
+import java.util.Collection;
+
 import org.drools.RuntimeDroolsException;
 import org.drools.spi.FieldValue;
 
@@ -25,9 +27,18 @@
 
     private static final long serialVersionUID = 320;
     private final Object      value;
+    
+    private final boolean     isCollection;
+    private final boolean     isNumber;
+    private final boolean     isBoolean;
+    private final boolean     isCharacter;
 
     public ObjectFieldImpl(final Object value) {
         this.value = value;
+        this.isCollection = value instanceof Collection;
+        this.isNumber = value instanceof Number;
+        this.isBoolean = value instanceof Boolean;
+        this.isCharacter = value instanceof Character;
     }
 
     public Object getValue() {
@@ -39,56 +50,56 @@
     }
 
     public boolean getBooleanValue() {
-        if ( this.value instanceof Boolean ) {
+        if ( isBoolean ) {
             return ((Boolean) this.value).booleanValue();
         }
         throw new RuntimeDroolsException( "Conversion to boolean not supported for type: " + this.value.getClass() );
     }
 
     public byte getByteValue() {
-        if ( this.value instanceof Number ) {
+        if ( isNumber ) {
             return ((Number) this.value).byteValue();
         }
         throw new RuntimeDroolsException( "Conversion to byte not supported for type: " + this.value.getClass() );
     }
 
     public char getCharValue() {
-        if ( this.value instanceof Character ) {
+        if ( isCharacter ) {
             return ((Character) this.value).charValue();
         }
         throw new RuntimeDroolsException( "Conversion to char not supported for type: " + this.value.getClass() );
     }
 
     public double getDoubleValue() {
-        if ( this.value instanceof Number ) {
+        if ( isNumber ) {
             return ((Number) this.value).doubleValue();
         }
         throw new RuntimeDroolsException( "Conversion to double not supported for type: " + this.value.getClass() );
     }
 
     public float getFloatValue() {
-        if ( this.value instanceof Number ) {
+        if ( isNumber ) {
             return ((Number) this.value).floatValue();
         }
         throw new RuntimeDroolsException( "Conversion to float not supported for type: " + this.value.getClass() );
     }
 
     public int getIntValue() {
-        if ( this.value instanceof Number ) {
+        if ( isNumber ) {
             return ((Number) this.value).intValue();
         }
         throw new RuntimeDroolsException( "Conversion to int not supported for type: " + this.value.getClass() );
     }
 
     public long getLongValue() {
-        if ( this.value instanceof Number ) {
+        if ( isNumber ) {
             return ((Number) this.value).longValue();
         }
         throw new RuntimeDroolsException( "Conversion to long not supported for type: " + this.value.getClass() );
     }
 
     public short getShortValue() {
-        if ( this.value instanceof Number ) {
+        if ( isNumber ) {
             return ((Number) this.value).shortValue();
         }
         throw new RuntimeDroolsException( "Conversion to short not supported for type: " + this.value.getClass() );
@@ -133,4 +144,8 @@
     public boolean isObjectField() {
         return true;
     }
+    
+    public boolean isCollectionField() {
+        return this.isCollection;
+    }
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -18,6 +18,7 @@
 
 import java.util.Arrays;
 
+import org.drools.base.evaluators.Operator;
 import org.drools.common.InternalFactHandle;
 import org.drools.common.InternalWorkingMemory;
 import org.drools.reteoo.ReteTuple;
@@ -46,7 +47,7 @@
         this.declaration = declaration;
         this.requiredDeclarations = new Declaration[]{declaration};
         this.evaluator = evaluator;
-        this.contextEntry = this.createContextEntry( fieldExtractor );
+        this.contextEntry = this.createContextEntry( this.evaluator, fieldExtractor );
     }
 
     public Declaration[] getRequiredDeclarations() {
@@ -109,19 +110,25 @@
                                                                                                                           other.requiredDeclarations );
     }
 
-    private final VariableContextEntry createContextEntry(final FieldExtractor fieldExtractor) {
-        if ( fieldExtractor.getValueType().isBoolean() ) {
-            return new BooleanVariableContextEntry( fieldExtractor,
-                                                    this.declaration );
-        } else if ( fieldExtractor.getValueType().isFloatNumber() ) {
-            return new DoubleVariableContextEntry( fieldExtractor,
+    private final VariableContextEntry createContextEntry(final Evaluator eval, final FieldExtractor fieldExtractor) {
+        if( Operator.MEMBEROF.equals( eval.getOperator() ) ||
+            Operator.NOTMEMBEROF.equals( eval.getOperator() ) ) {
+            return new ObjectVariableContextEntry( fieldExtractor,
                                                    this.declaration );
-        } else if ( fieldExtractor.getValueType().isIntegerNumber() ) {
-            return new LongVariableContextEntry( fieldExtractor,
-                                                 this.declaration );
         } else {
-            return new ObjectVariableContextEntry( fieldExtractor,
-                                                   this.declaration );
+            if ( fieldExtractor.getValueType().isBoolean() ) {
+                return new BooleanVariableContextEntry( fieldExtractor,
+                                                        this.declaration );
+            } else if ( fieldExtractor.getValueType().isFloatNumber() ) {
+                return new DoubleVariableContextEntry( fieldExtractor,
+                                                       this.declaration );
+            } else if ( fieldExtractor.getValueType().isIntegerNumber() ) {
+                return new LongVariableContextEntry( fieldExtractor,
+                                                     this.declaration );
+            } else {
+                return new ObjectVariableContextEntry( fieldExtractor,
+                                                       this.declaration );
+            }
         }
     }
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FieldValue.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FieldValue.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FieldValue.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -50,4 +50,10 @@
 
     public boolean isObjectField();
 
+    /**
+     * Returns true if the given field value implements the Collection interface
+     * @return
+     */
+    public boolean isCollectionField();
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/EvaluatorFactoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/EvaluatorFactoryTest.java	2007-04-30 22:00:06 UTC (rev 11530)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/EvaluatorFactoryTest.java	2007-04-30 22:47:40 UTC (rev 11531)
@@ -21,6 +21,8 @@
 import java.math.BigInteger;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
 import java.util.List;
 import java.util.Locale;
 
@@ -50,11 +52,35 @@
         final List list = new ArrayList();
         list.add( "foo" );
 
-        final Object[][] data = {{"foo", "==", "bar", Boolean.FALSE}, {"foo", "==", "foo", Boolean.TRUE}, {"foo", "!=", "bar", Boolean.TRUE}, {list, "contains", "foo", Boolean.TRUE}, {list, "contains", "bar", Boolean.FALSE},
-                {list, "==", null, Boolean.FALSE}, {list, "!=", null, Boolean.TRUE}, {null, "==", null, Boolean.TRUE}, {null, "==", list, Boolean.FALSE}, {null, "!=", list, Boolean.TRUE},
-                {new BigDecimal( "42.42" ), "<", new BigDecimal( "43" ), Boolean.TRUE}, {new BigDecimal( "42.42" ), ">", new BigDecimal( "43" ), Boolean.FALSE}, {new BigDecimal( "42.42" ), "<=", new BigDecimal( "42.42" ), Boolean.TRUE},
-                {new BigInteger( "42" ), ">=", new BigInteger( "43" ), Boolean.FALSE}, {new BigInteger( "42" ), ">=", new BigInteger( "43" ), Boolean.FALSE}, {list, "excludes", "baz", Boolean.TRUE}, {list, "excludes", "foo", Boolean.FALSE}
+        Collection col = Arrays.asList( new String[] { "foo", "bar", null} );
 
+        final Object[][] data = {
+                                 {"foo", "==", "bar", Boolean.FALSE}, 
+                                 {"foo", "==", "foo", Boolean.TRUE}, 
+                                 {"foo", "!=", "bar", Boolean.TRUE}, 
+                                 {list, "contains", "foo", Boolean.TRUE}, 
+                                 {list, "contains", "bar", Boolean.FALSE},
+                                 {list, "==", null, Boolean.FALSE}, 
+                                 {list, "!=", null, Boolean.TRUE}, 
+                                 {null, "==", null, Boolean.TRUE}, 
+                                 {null, "==", list, Boolean.FALSE}, 
+                                 {null, "!=", list, Boolean.TRUE},
+                                 {new BigDecimal( "42.42" ), "<", new BigDecimal( "43" ), Boolean.TRUE}, 
+                                 {new BigDecimal( "42.42" ), ">", new BigDecimal( "43" ), Boolean.FALSE}, 
+                                 {new BigDecimal( "42.42" ), "<=", new BigDecimal( "42.42" ), Boolean.TRUE},
+                                 {new BigInteger( "42" ), ">=", new BigInteger( "43" ), Boolean.FALSE}, 
+                                 {new BigInteger( "42" ), ">=", new BigInteger( "43" ), Boolean.FALSE}, 
+                                 {list, "excludes", "baz", Boolean.TRUE}, 
+                                 {list, "excludes", "foo", Boolean.FALSE},
+                                 {"foo", "memberOf", col, Boolean.TRUE},
+                                 {"xyz", "memberOf", col, Boolean.FALSE},
+                                 {null, "memberOf", col, Boolean.TRUE},
+                                 {"foo", "memberOf", null, Boolean.FALSE},
+                                 {"foo", "not memberOf", col, Boolean.FALSE},
+                                 {"xyz", "not memberOf", col, Boolean.TRUE},
+                                 {null, "not memberOf", col, Boolean.FALSE},
+                                 {"foo", "not memberOf", null, Boolean.FALSE}
+
         };
 
         runEvaluatorTest( data,
@@ -66,8 +92,32 @@
 
         final Object[] field = new Object[]{"foo", "bar"};
 
-        final Object[][] data = {{field, "==", new Object[]{"foo"}, Boolean.FALSE}, {field, "==", field, Boolean.TRUE}, {field, "!=", new Object[]{"foo"}, Boolean.TRUE}, {field, "contains", "foo", Boolean.TRUE}, {field, "!=", null, Boolean.TRUE},
-                {field, "==", null, Boolean.FALSE}, {null, "==", field, Boolean.FALSE}, {null, "==", null, Boolean.TRUE}, {null, "!=", field, Boolean.TRUE}, {null, "!=", null, Boolean.FALSE}};
+        final Object[][] data = {{field, "==", new Object[]{"foo"}, Boolean.FALSE}, 
+                                 {field, "==", field, Boolean.TRUE}, 
+                                 {field, "!=", new Object[]{"foo"}, Boolean.TRUE}, 
+                                 {field, "contains", "foo", Boolean.TRUE}, 
+                                 {field, "contains", "xyz", Boolean.FALSE}, 
+                                 {field, "contains", null, Boolean.FALSE}, 
+                                 {null, "contains", "foo", Boolean.FALSE}, 
+                                 {field, "excludes", "foo", Boolean.FALSE}, 
+                                 {field, "excludes", "xyz", Boolean.TRUE},
+                                 {field, "excludes", null, Boolean.TRUE}, 
+                                 {null, "excludes", "foo", Boolean.FALSE}, 
+                                 {field, "!=", null, Boolean.TRUE},
+                                 {field, "==", null, Boolean.FALSE}, 
+                                 {null, "==", field, Boolean.FALSE}, 
+                                 {null, "==", null, Boolean.TRUE}, 
+                                 {null, "!=", field, Boolean.TRUE}, 
+                                 {null, "!=", null, Boolean.FALSE}, 
+                                 {"foo", "memberOf", field, Boolean.TRUE}, 
+                                 {"xyz", "memberOf", field, Boolean.FALSE},
+                                 {null, "memberOf", field, Boolean.FALSE}, 
+                                 {"foo", "memberOf", null, Boolean.FALSE}, 
+                                 {"foo", "not memberOf", field, Boolean.FALSE}, 
+                                 {"xyz", "not memberOf", field, Boolean.TRUE},
+                                 {null, "not memberOf", field, Boolean.TRUE}, 
+                                 {"foo", "not memberOf", null, Boolean.FALSE} 
+                                 };
 
         runEvaluatorTest( data,
                           ValueType.ARRAY_TYPE );
@@ -75,10 +125,31 @@
     }
 
     public void testString() {
+        
+        Collection col = Arrays.asList( new String[] { "foo", "bar", null} );
 
-        final Object[][] data = {{"foo", "==", "bar", Boolean.FALSE}, {"foo", "==", "foo", Boolean.TRUE}, {"foo", "!=", "bar", Boolean.TRUE}, {"something foo", "matches", ".*foo", Boolean.TRUE}, {"foo", "matches", ".*foo", Boolean.TRUE},
-                {"foo", "matches", "bar", Boolean.FALSE}, {null, "matches", ".*foo", Boolean.FALSE}, {"foo", "==", null, Boolean.FALSE}, {"foo", "!=", null, Boolean.TRUE}, {null, "==", null, Boolean.TRUE}, {"foo", "!=", null, Boolean.TRUE},
-                {null, "!=", "foo", Boolean.TRUE}, {null, "!=", null, Boolean.FALSE}};
+        final Object[][] data = {{"foo", "==", "bar", Boolean.FALSE}, 
+                                 {"foo", "==", "foo", Boolean.TRUE}, 
+                                 {"foo", "!=", "bar", Boolean.TRUE}, 
+                                 {"something foo", "matches", ".*foo", Boolean.TRUE}, 
+                                 {"foo", "matches", ".*foo", Boolean.TRUE},
+                                 {"foo", "matches", "bar", Boolean.FALSE}, 
+                                 {null, "matches", ".*foo", Boolean.FALSE}, 
+                                 {"foo", "==", null, Boolean.FALSE}, 
+                                 {"foo", "!=", null, Boolean.TRUE}, 
+                                 {null, "==", null, Boolean.TRUE}, 
+                                 {"foo", "!=", null, Boolean.TRUE},
+                                 {null, "!=", "foo", Boolean.TRUE}, 
+                                 {null, "!=", null, Boolean.FALSE},
+                                 {"foo", "memberOf", col, Boolean.TRUE},
+                                 {"xyz", "memberOf", col, Boolean.FALSE},
+                                 {null, "memberOf", col, Boolean.TRUE},
+                                 {"foo", "memberOf", null, Boolean.FALSE},
+                                 {"foo", "not memberOf", col, Boolean.FALSE},
+                                 {"xyz", "not memberOf", col, Boolean.TRUE},
+                                 {null, "not memberOf", col, Boolean.FALSE},
+                                 {"foo", "not memberOf", null, Boolean.FALSE}
+                                 };
 
         runEvaluatorTest( data,
                           ValueType.STRING_TYPE );
@@ -87,11 +158,33 @@
 
     public void testInteger() {
 
-        final Object[][] data = {{new Integer( 42 ), "==", new Integer( 42 ), Boolean.TRUE}, {new Integer( 42 ), "<", new Integer( 43 ), Boolean.TRUE}, {new Integer( 42 ), ">=", new Integer( 41 ), Boolean.TRUE},
-                {new Integer( 42 ), "!=", new Integer( 41 ), Boolean.TRUE}, {new Integer( 42 ), ">", new Integer( 41 ), Boolean.TRUE}, {new Integer( 42 ), "<=", new Integer( 42 ), Boolean.TRUE},
-                {new Integer( 42 ), ">", new Integer( 100 ), Boolean.FALSE}, {new Integer( 42 ), "!=", null, Boolean.TRUE}, {new Integer( 42 ), "==", null, Boolean.FALSE}, {null, "==", null, Boolean.TRUE}, 
-                {null, "!=", null, Boolean.FALSE}, {null, "!=", new Integer( 42 ), Boolean.TRUE}, {null, "==", new Integer( 42 ), Boolean.FALSE}};
+        Collection col = new ArrayList();
+        col.add( new Integer(42) );
+        col.add( new Integer(45) );
 
+        final Object[][] data = {{new Integer( 42 ), "==", new Integer( 42 ), Boolean.TRUE}, 
+                                 {new Integer( 42 ), "<", new Integer( 43 ), Boolean.TRUE}, 
+                                 {new Integer( 42 ), ">=", new Integer( 41 ), Boolean.TRUE},
+                                 {new Integer( 42 ), "!=", new Integer( 41 ), Boolean.TRUE}, 
+                                 {new Integer( 42 ), ">", new Integer( 41 ), Boolean.TRUE}, 
+                                 {new Integer( 42 ), "<=", new Integer( 42 ), Boolean.TRUE},
+                                 {new Integer( 42 ), ">", new Integer( 100 ), Boolean.FALSE}, 
+                                 {new Integer( 42 ), "!=", null, Boolean.TRUE}, 
+                                 {new Integer( 42 ), "==", null, Boolean.FALSE}, 
+                                 {null, "==", null, Boolean.TRUE}, 
+                                 {null, "!=", null, Boolean.FALSE}, 
+                                 {null, "!=", new Integer( 42 ), Boolean.TRUE}, 
+                                 {null, "==", new Integer( 42 ), Boolean.FALSE},
+                                 {new Integer( 42 ), "memberOf", col, Boolean.TRUE},
+                                 {new Integer( 43 ), "memberOf", col, Boolean.FALSE},
+                                 {null, "memberOf", col, Boolean.FALSE},
+                                 {new Integer( 42 ), "memberOf", null, Boolean.FALSE},
+                                 {new Integer( 42 ), "not memberOf", col, Boolean.FALSE},
+                                 {new Integer( 43 ), "not memberOf", col, Boolean.TRUE},
+                                 {null, "not memberOf", col, Boolean.TRUE},
+                                 {new Integer( 42 ), "not memberOf", null, Boolean.FALSE}
+                                 };
+
         runEvaluatorTest( data,
                           ValueType.PINTEGER_TYPE );
 
@@ -103,11 +196,31 @@
         assertSame( type,
                     ValueType.BIG_DECIMAL_TYPE );
 
-        final Object[][] data = {{new BigDecimal( 42 ), "==", new BigDecimal( 42 ), Boolean.TRUE}, {new BigDecimal( 42 ), "<", new BigDecimal( 43 ), Boolean.TRUE}, {new BigDecimal( 42 ), ">=", new BigDecimal( 41 ), Boolean.TRUE},
-                {new BigDecimal( 42 ), "!=", new BigDecimal( 41 ), Boolean.TRUE}, {new BigDecimal( 42 ), ">", new BigDecimal( 41 ), Boolean.TRUE}, {new BigDecimal( 42 ), "<=", new BigDecimal( 42 ), Boolean.TRUE},
-                {new BigDecimal( 42 ), ">", new BigDecimal( 100 ), Boolean.FALSE}, {new BigDecimal( 42 ), "==", null, Boolean.FALSE}, {new BigDecimal( 42 ), "!=", null, Boolean.TRUE}, {null, "==", new BigDecimal( 42 ), Boolean.FALSE},
-                {null, "!=", new BigDecimal( 42 ), Boolean.TRUE}};
+        Collection col = new ArrayList();
+        col.add( new BigDecimal(42) );
+        col.add( new BigDecimal(45) );
 
+        final Object[][] data = {{new BigDecimal( 42 ), "==", new BigDecimal( 42 ), Boolean.TRUE}, 
+                                 {new BigDecimal( 42 ), "<", new BigDecimal( 43 ), Boolean.TRUE}, 
+                                 {new BigDecimal( 42 ), ">=", new BigDecimal( 41 ), Boolean.TRUE},
+                                 {new BigDecimal( 42 ), "!=", new BigDecimal( 41 ), Boolean.TRUE}, 
+                                 {new BigDecimal( 42 ), ">", new BigDecimal( 41 ), Boolean.TRUE}, 
+                                 {new BigDecimal( 42 ), "<=", new BigDecimal( 42 ), Boolean.TRUE},
+                                 {new BigDecimal( 42 ), ">", new BigDecimal( 100 ), Boolean.FALSE}, 
+                                 {new BigDecimal( 42 ), "==", null, Boolean.FALSE}, 
+                                 {new BigDecimal( 42 ), "!=", null, Boolean.TRUE}, 
+                                 {null, "==", new BigDecimal( 42 ), Boolean.FALSE},
+                                 {null, "!=", new BigDecimal( 42 ), Boolean.TRUE},
+                                 {new BigDecimal( 42 ), "memberOf", col, Boolean.TRUE},
+                                 {new BigDecimal( 43 ), "memberOf", col, Boolean.FALSE},
+                                 {null, "memberOf", col, Boolean.FALSE},
+                                 {new BigDecimal( 42 ), "memberOf", null, Boolean.FALSE},
+                                 {new BigDecimal( 42 ), "not memberOf", col, Boolean.FALSE},
+                                 {new BigDecimal( 43 ), "not memberOf", col, Boolean.TRUE},
+                                 {null, "not memberOf", col, Boolean.TRUE},
+                                 {new BigDecimal( 42 ), "not memberOf", null, Boolean.FALSE}
+                                 };
+
         runEvaluatorTest( data,
                           ValueType.BIG_DECIMAL_TYPE );
 
@@ -119,11 +232,31 @@
         assertSame( type,
                     ValueType.BIG_INTEGER_TYPE );
 
-        final Object[][] data = {{new BigInteger( "42" ), "==", new BigInteger( "42" ), Boolean.TRUE}, {new BigInteger( "42" ), "<", new BigInteger( "43" ), Boolean.TRUE}, {new BigInteger( "42" ), ">=", new BigInteger( "41" ), Boolean.TRUE},
-                {new BigInteger( "42" ), "!=", new BigInteger( "41" ), Boolean.TRUE}, {new BigInteger( "42" ), ">", new BigInteger( "41" ), Boolean.TRUE}, {new BigInteger( "42" ), "<=", new BigInteger( "42" ), Boolean.TRUE},
-                {new BigInteger( "42" ), ">", new BigInteger( "100" ), Boolean.FALSE}, {new BigInteger( "42" ), "==", null, Boolean.FALSE}, {new BigInteger( "42" ), "!=", null, Boolean.TRUE}, {null, "==", new BigInteger( "42" ), Boolean.FALSE},
-                {null, "!=", new BigInteger( "42" ), Boolean.TRUE}};
+        Collection col = new ArrayList();
+        col.add( new BigInteger("42") );
+        col.add( new BigInteger("45") );
 
+        final Object[][] data = {{new BigInteger( "42" ), "==", new BigInteger( "42" ), Boolean.TRUE}, 
+                                 {new BigInteger( "42" ), "<", new BigInteger( "43" ), Boolean.TRUE}, 
+                                 {new BigInteger( "42" ), ">=", new BigInteger( "41" ), Boolean.TRUE},
+                                 {new BigInteger( "42" ), "!=", new BigInteger( "41" ), Boolean.TRUE}, 
+                                 {new BigInteger( "42" ), ">", new BigInteger( "41" ), Boolean.TRUE}, 
+                                 {new BigInteger( "42" ), "<=", new BigInteger( "42" ), Boolean.TRUE},
+                                 {new BigInteger( "42" ), ">", new BigInteger( "100" ), Boolean.FALSE}, 
+                                 {new BigInteger( "42" ), "==", null, Boolean.FALSE}, 
+                                 {new BigInteger( "42" ), "!=", null, Boolean.TRUE}, 
+                                 {null, "==", new BigInteger( "42" ), Boolean.FALSE},
+                                 {null, "!=", new BigInteger( "42" ), Boolean.TRUE},
+                                 {new BigInteger( "42" ), "memberOf", col, Boolean.TRUE},
+                                 {new BigInteger( "43" ), "memberOf", col, Boolean.FALSE},
+                                 {null, "memberOf", col, Boolean.FALSE},
+                                 {new BigInteger( "42" ), "memberOf", null, Boolean.FALSE},
+                                 {new BigInteger( "42" ), "not memberOf", col, Boolean.FALSE},
+                                 {new BigInteger( "43" ), "not memberOf", col, Boolean.TRUE},
+                                 {null, "not memberOf", col, Boolean.TRUE},
+                                 {new BigInteger( "42" ), "not memberOf", null, Boolean.FALSE}
+                                 };
+
         runEvaluatorTest( data,
                           ValueType.BIG_INTEGER_TYPE );
 
@@ -131,10 +264,29 @@
 
     public void testShort() {
 
+        Collection col = new ArrayList();
+        col.add( new Short( (short) 42) );
+        col.add( new Short( (short) 45) );
+
         //Test data: Obj1, Operand, Obj2
-        final Object[][] data = {{new Short( (short) 42 ), "==", new Short( (short) 42 ), Boolean.TRUE}, {new Short( (short) 42 ), "<", new Short( (short) 43 ), Boolean.TRUE}, {new Short( (short) 42 ), ">=", new Short( (short) 41 ), Boolean.TRUE},
-                {new Short( (short) 42 ), "!=", new Short( (short) 41 ), Boolean.TRUE}, {new Short( (short) 42 ), "==", null, Boolean.FALSE}, {null, "==", null, Boolean.TRUE}, {null, "!=", null, Boolean.FALSE}, 
-                {null, "!=", new Short( (short) 42 ), Boolean.TRUE}, {null, "==", new Short( (short) 42 ), Boolean.FALSE}};
+        final Object[][] data = {{new Short( (short) 42 ), "==", new Short( (short) 42 ), Boolean.TRUE}, 
+                                 {new Short( (short) 42 ), "<", new Short( (short) 43 ), Boolean.TRUE}, 
+                                 {new Short( (short) 42 ), ">=", new Short( (short) 41 ), Boolean.TRUE},
+                                 {new Short( (short) 42 ), "!=", new Short( (short) 41 ), Boolean.TRUE}, 
+                                 {new Short( (short) 42 ), "==", null, Boolean.FALSE}, 
+                                 {null, "==", null, Boolean.TRUE}, 
+                                 {null, "!=", null, Boolean.FALSE}, 
+                                 {null, "!=", new Short( (short) 42 ), Boolean.TRUE}, 
+                                 {null, "==", new Short( (short) 42 ), Boolean.FALSE},
+                                 {new Short( (short) 42 ), "memberOf", col, Boolean.TRUE},
+                                 {new Short( (short) 43 ), "memberOf", col, Boolean.FALSE},
+                                 {null, "memberOf", col, Boolean.FALSE},
+                                 {new Short( (short) 42 ), "memberOf", null, Boolean.FALSE},
+                                 {new Short( (short) 42 ), "not memberOf", col, Boolean.FALSE},
+                                 {new Short( (short) 43 ), "not memberOf", col, Boolean.TRUE},
+                                 {null, "not memberOf", col, Boolean.TRUE},
+                                 {new Short( (short) 42 ), "not memberOf", null, Boolean.FALSE}
+                                 };
 
         runEvaluatorTest( data,
                           ValueType.PSHORT_TYPE );
@@ -142,50 +294,161 @@
 
     public void testBoolean() {
 
+        Collection col = new ArrayList();
+        col.add( new Boolean( true ) );
+        col.add( new Boolean( true ) );
+
         //Test data: Obj1, Operand, Obj2
-        final Object[][] data = {{new Boolean( true ), "==", new Boolean( true ), Boolean.TRUE}, {new Boolean( false ), "!=", new Boolean( true ), Boolean.TRUE}, {new Boolean( true ), "==", new Boolean( false ), Boolean.FALSE},
-                {new Boolean( true ), "!=", new Boolean( false ), Boolean.TRUE}, {new Boolean( true ), "==", null, Boolean.FALSE}, {null, "==", null, Boolean.TRUE}, {null, "!=", null, Boolean.FALSE}, 
-                {null, "!=", new Boolean( true ), Boolean.TRUE}, {null, "==", new Boolean( true ), Boolean.FALSE}};
+        final Object[][] data = {{new Boolean( true ), "==", new Boolean( true ), Boolean.TRUE}, 
+                                 {new Boolean( false ), "!=", new Boolean( true ), Boolean.TRUE}, 
+                                 {new Boolean( true ), "==", new Boolean( false ), Boolean.FALSE},
+                                 {new Boolean( true ), "!=", new Boolean( false ), Boolean.TRUE}, 
+                                 {new Boolean( true ), "==", null, Boolean.FALSE}, 
+                                 {null, "==", null, Boolean.TRUE}, 
+                                 {null, "!=", null, Boolean.FALSE}, 
+                                 {null, "!=", new Boolean( true ), Boolean.TRUE}, 
+                                 {null, "==", new Boolean( true ), Boolean.FALSE},
+                                 {new Boolean( true ), "memberOf", col, Boolean.TRUE},
+                                 {new Boolean( false ), "memberOf", col, Boolean.FALSE},
+                                 {null, "memberOf", col, Boolean.FALSE},
+                                 {new Boolean( true ), "memberOf", null, Boolean.FALSE},
+                                 {new Boolean( true ), "not memberOf", col, Boolean.FALSE},
+                                 {new Boolean( false ), "not memberOf", col, Boolean.TRUE},
+                                 {null, "not memberOf", col, Boolean.TRUE},
+                                 {new Boolean( true ), "not memberOf", null, Boolean.FALSE}
+                                 };
 
         runEvaluatorTest( data,
                           ValueType.PBOOLEAN_TYPE );
     }
 
     public void testDouble() {
-        final Object[][] data = {{new Double( 42 ), "==", new Double( 42 ), Boolean.TRUE}, {new Double( 42 ), "<", new Double( 43 ), Boolean.TRUE}, {new Double( 42 ), ">=", new Double( 41 ), Boolean.TRUE},
-                {new Double( 42 ), "!=", new Double( 41 ), Boolean.TRUE}, {new Double( 42 ), ">", new Double( 41 ), Boolean.TRUE}, {new Double( 42 ), ">=", new Double( 41 ), Boolean.TRUE}, {new Double( 42 ), ">=", new Double( 42 ), Boolean.TRUE},
-                {new Double( 42 ), ">=", new Double( 100 ), Boolean.FALSE}, {new Double( 42 ), "<", new Double( 1 ), Boolean.FALSE}, {new Double( 42 ), "==", null, Boolean.FALSE}, {null, "==", null, Boolean.TRUE}, {null, "!=", null, Boolean.FALSE}, 
-                {null, "!=", new Double( 42 ), Boolean.TRUE}, {null, "==", new Double( 42 ), Boolean.FALSE}};
+        Collection col = new ArrayList();
+        col.add( new Double(42) );
+        col.add( new Double(45) );
 
+        final Object[][] data = {{new Double( 42 ), "==", new Double( 42 ), Boolean.TRUE}, 
+                                 {new Double( 42 ), "<", new Double( 43 ), Boolean.TRUE}, 
+                                 {new Double( 42 ), ">=", new Double( 41 ), Boolean.TRUE},
+                                 {new Double( 42 ), "!=", new Double( 41 ), Boolean.TRUE}, 
+                                 {new Double( 42 ), ">", new Double( 41 ), Boolean.TRUE}, 
+                                 {new Double( 42 ), ">=", new Double( 41 ), Boolean.TRUE}, 
+                                 {new Double( 42 ), ">=", new Double( 42 ), Boolean.TRUE},
+                                 {new Double( 42 ), ">=", new Double( 100 ), Boolean.FALSE}, 
+                                 {new Double( 42 ), "<", new Double( 1 ), Boolean.FALSE}, 
+                                 {new Double( 42 ), "==", null, Boolean.FALSE}, 
+                                 {null, "==", null, Boolean.TRUE}, 
+                                 {null, "!=", null, Boolean.FALSE}, 
+                                 {null, "!=", new Double( 42 ), Boolean.TRUE}, 
+                                 {null, "==", new Double( 42 ), Boolean.FALSE},
+                                 {new Double( 42 ), "memberOf", col, Boolean.TRUE},
+                                 {new Double( 43 ), "memberOf", col, Boolean.FALSE},
+                                 {null, "memberOf", col, Boolean.FALSE},
+                                 {new Double( 42 ), "memberOf", null, Boolean.FALSE},
+                                 {new Double( 42 ), "not memberOf", col, Boolean.FALSE},
+                                 {new Double( 43 ), "not memberOf", col, Boolean.TRUE},
+                                 {null, "not memberOf", col, Boolean.TRUE},
+                                 {new Double( 42 ), "not memberOf", null, Boolean.FALSE}
+                                 };
+
         runEvaluatorTest( data,
                           ValueType.PDOUBLE_TYPE );
     }
 
     public void testFloat() {
-        final Object[][] data = {{new Float( 42 ), "==", new Float( 42 ), Boolean.TRUE}, {new Float( 42 ), "<", new Float( 43 ), Boolean.TRUE}, {new Float( 42 ), ">=", new Float( 41 ), Boolean.TRUE},
-                {new Float( 42 ), "!=", new Float( 41 ), Boolean.TRUE}, {new Float( 42 ), ">", new Float( 41 ), Boolean.TRUE}, {new Float( 42 ), ">=", new Float( 41 ), Boolean.TRUE}, {new Float( 42 ), ">=", new Float( 42 ), Boolean.TRUE},
-                {new Float( 42 ), ">=", new Float( 100 ), Boolean.FALSE}, {new Float( 42 ), "<", new Float( 1 ), Boolean.FALSE}, {new Float( 42 ), "==", null, Boolean.FALSE}, {null, "==", null, Boolean.TRUE}, {null, "!=", null, Boolean.FALSE}, 
-                {null, "!=", new Float( 42 ), Boolean.TRUE}, {null, "==", new Float( 42 ), Boolean.FALSE}};
+        Collection col = new ArrayList();
+        col.add( new Float(42) );
+        col.add( new Float(45) );
 
+        final Object[][] data = {{new Float( 42 ), "==", new Float( 42 ), Boolean.TRUE}, 
+                                 {new Float( 42 ), "<", new Float( 43 ), Boolean.TRUE}, 
+                                 {new Float( 42 ), ">=", new Float( 41 ), Boolean.TRUE},
+                                 {new Float( 42 ), "!=", new Float( 41 ), Boolean.TRUE}, 
+                                 {new Float( 42 ), ">", new Float( 41 ), Boolean.TRUE}, 
+                                 {new Float( 42 ), ">=", new Float( 41 ), Boolean.TRUE}, 
+                                 {new Float( 42 ), ">=", new Float( 42 ), Boolean.TRUE},
+                                 {new Float( 42 ), ">=", new Float( 100 ), Boolean.FALSE}, 
+                                 {new Float( 42 ), "<", new Float( 1 ), Boolean.FALSE}, 
+                                 {new Float( 42 ), "==", null, Boolean.FALSE}, 
+                                 {null, "==", null, Boolean.TRUE}, 
+                                 {null, "!=", null, Boolean.FALSE}, 
+                                 {null, "!=", new Float( 42 ), Boolean.TRUE}, 
+                                 {null, "==", new Float( 42 ), Boolean.FALSE},
+                                 {new Float( 42 ), "memberOf", col, Boolean.TRUE},
+                                 {new Float( 43 ), "memberOf", col, Boolean.FALSE},
+                                 {null, "memberOf", col, Boolean.FALSE},
+                                 {new Float( 42 ), "memberOf", null, Boolean.FALSE},
+                                 {new Float( 42 ), "not memberOf", col, Boolean.FALSE},
+                                 {new Float( 43 ), "not memberOf", col, Boolean.TRUE},
+                                 {null, "not memberOf", col, Boolean.TRUE},
+                                 {new Float( 42 ), "not memberOf", null, Boolean.FALSE}
+                                 };
+
         runEvaluatorTest( data,
                           ValueType.PFLOAT_TYPE );
     }
 
     public void testLong() {
-        final Object[][] data = {{new Long( 42 ), "==", new Long( 42 ), Boolean.TRUE}, {new Long( 42 ), "<", new Long( 43 ), Boolean.TRUE}, {new Long( 42 ), ">=", new Long( 41 ), Boolean.TRUE}, {new Long( 42 ), "!=", new Long( 41 ), Boolean.TRUE},
-                {new Long( 42 ), ">", new Long( 41 ), Boolean.TRUE}, {new Long( 42 ), ">=", new Long( 41 ), Boolean.TRUE}, {new Long( 42 ), ">=", new Long( 42 ), Boolean.TRUE}, {new Long( 42 ), ">=", new Long( 100 ), Boolean.FALSE},
-                {new Long( 42 ), "<", new Long( 1 ), Boolean.FALSE}, {new Long( 42 ), "==", null, Boolean.FALSE}, {null, "==", null, Boolean.TRUE}, {null, "!=", null, Boolean.FALSE}, {null, "!=", new Long( 42 ), Boolean.TRUE}, 
-                {null, "==", new Long( 42 ), Boolean.FALSE}};
+        Collection col = new ArrayList();
+        col.add( new Long(42) );
+        col.add( new Long(45) );
 
+        final Object[][] data = {{new Long( 42 ), "==", new Long( 42 ), Boolean.TRUE}, 
+                                 {new Long( 42 ), "<", new Long( 43 ), Boolean.TRUE}, 
+                                 {new Long( 42 ), ">=", new Long( 41 ), Boolean.TRUE}, 
+                                 {new Long( 42 ), "!=", new Long( 41 ), Boolean.TRUE},
+                                 {new Long( 42 ), ">", new Long( 41 ), Boolean.TRUE}, 
+                                 {new Long( 42 ), ">=", new Long( 41 ), Boolean.TRUE}, 
+                                 {new Long( 42 ), ">=", new Long( 42 ), Boolean.TRUE}, 
+                                 {new Long( 42 ), ">=", new Long( 100 ), Boolean.FALSE},
+                                 {new Long( 42 ), "<", new Long( 1 ), Boolean.FALSE}, 
+                                 {new Long( 42 ), "==", null, Boolean.FALSE}, 
+                                 {null, "==", null, Boolean.TRUE},
+                                 {null, "!=", null, Boolean.FALSE}, 
+                                 {null, "!=", new Long( 42 ), Boolean.TRUE}, 
+                                 {null, "==", new Long( 42 ), Boolean.FALSE},
+                                 {new Long( 42 ), "memberOf", col, Boolean.TRUE},
+                                 {new Long( 43 ), "memberOf", col, Boolean.FALSE},
+                                 {null, "memberOf", col, Boolean.FALSE},
+                                 {new Long( 42 ), "memberOf", null, Boolean.FALSE},
+                                 {new Long( 42 ), "not memberOf", col, Boolean.FALSE},
+                                 {new Long( 43 ), "not memberOf", col, Boolean.TRUE},
+                                 {null, "not memberOf", col, Boolean.TRUE},
+                                 {new Long( 42 ), "not memberOf", null, Boolean.FALSE}
+                                 };
+
         runEvaluatorTest( data,
                           ValueType.PLONG_TYPE );
     }
 
     public void testCharacter() {
-        final Object[][] data = {{new Character( 'a' ), "==", new Character( 'a' ), Boolean.TRUE}, {new Character( 'a' ), "<", new Character( 'b' ), Boolean.TRUE}, {new Character( 'a' ), ">=", new Character( 'a' ), Boolean.TRUE},
-                {new Character( 'a' ), "!=", new Character( 'Z' ), Boolean.TRUE}, {new Character( 'z' ), ">", new Character( 'a' ), Boolean.TRUE}, {new Character( 'z' ), ">=", new Character( 'z' ), Boolean.TRUE},
-                {new Character( 'z' ), ">=", new Character( 'a' ), Boolean.TRUE}, {new Character( 'a' ), ">=", new Character( 'z' ), Boolean.FALSE}, {new Character( 'z' ), "<", new Character( 'a' ), Boolean.FALSE},
-                {new Character( 'z' ), "==", null, Boolean.FALSE}, {null, "==", null, Boolean.TRUE}, {null, "!=", null, Boolean.FALSE}, {null, "!=", new Character( 'z' ), Boolean.TRUE}, {null, "==", new Character( 'z' ), Boolean.FALSE}};
+        Collection col = new ArrayList();
+        col.add( new Character( 'a' ) );
+        col.add( new Character( 'b' ) );
+
+        final Object[][] data = {{new Character( 'a' ), "==", new Character( 'a' ), Boolean.TRUE}, 
+                                 {new Character( 'a' ), "<", new Character( 'b' ), Boolean.TRUE}, 
+                                 {new Character( 'a' ), ">=", new Character( 'a' ), Boolean.TRUE},
+                                 {new Character( 'a' ), "!=", new Character( 'Z' ), Boolean.TRUE}, 
+                                 {new Character( 'z' ), ">", new Character( 'a' ), Boolean.TRUE}, 
+                                 {new Character( 'z' ), ">=", new Character( 'z' ), Boolean.TRUE},
+                                 {new Character( 'z' ), ">=", new Character( 'a' ), Boolean.TRUE}, 
+                                 {new Character( 'a' ), ">=", new Character( 'z' ), Boolean.FALSE}, 
+                                 {new Character( 'z' ), "<", new Character( 'a' ), Boolean.FALSE},
+                                 {new Character( 'z' ), "==", null, Boolean.FALSE}, 
+                                 {null, "==", null, Boolean.TRUE}, 
+                                 {null, "!=", null, Boolean.FALSE}, 
+                                 {null, "!=", new Character( 'z' ), Boolean.TRUE}, 
+                                 {null, "==", new Character( 'z' ), Boolean.FALSE},
+                                 {new Character( 'a' ), "memberOf", col, Boolean.TRUE},
+                                 {new Character( 'z' ), "memberOf", col, Boolean.FALSE},
+                                 {null, "memberOf", col, Boolean.FALSE},
+                                 {new Character( 'a' ), "memberOf", null, Boolean.FALSE},
+                                 {new Character( 'a' ), "not memberOf", col, Boolean.FALSE},
+                                 {new Character( 'z' ), "not memberOf", col, Boolean.TRUE},
+                                 {null, "not memberOf", col, Boolean.TRUE},
+                                 {new Character( 'a' ), "not memberOf", null, Boolean.FALSE}
+                                 };
         runEvaluatorTest( data,
                           ValueType.PCHAR_TYPE );
     }
@@ -194,21 +457,64 @@
 
         final SimpleDateFormat df = new SimpleDateFormat( "dd-MMM-yyyy",
                                                           Locale.ENGLISH );
+        Collection col = new ArrayList();
+        col.add( df.parse( "10-Jul-1974" ) );
+        col.add( df.parse( "11-Jul-1974" ) );
 
         //note that strings are also allowed on the right
-        final Object[][] data = {{df.parse( "10-Jul-1974" ), "==", df.parse( "10-Jul-1974" ), Boolean.TRUE}, {df.parse( "10-Jul-1974" ), "<", df.parse( "11-Jul-1974" ), Boolean.TRUE},
-                {df.parse( "10-Jul-1974" ), ">=", df.parse( "10-Jul-1974" ), Boolean.TRUE}, {df.parse( "10-Jul-1974" ), "!=", df.parse( "11-Jul-1974" ), Boolean.TRUE}, {df.parse( "10-Jul-2000" ), ">", df.parse( "10-Jul-1974" ), Boolean.TRUE},
-                {df.parse( "10-Jul-1974" ), ">=", df.parse( "10-Jul-1974" ), Boolean.TRUE}, {df.parse( "11-Jul-1974" ), ">=", df.parse( "10-Jul-1974" ), Boolean.TRUE}, {df.parse( "10-Jul-1974" ), ">=", df.parse( "11-Jul-1974" ), Boolean.FALSE},
-                {df.parse( "10-Jul-2000" ), "<", df.parse( "10-Jul-1974" ), Boolean.FALSE}, {df.parse( "10-Jul-1974" ), "<", df.parse( "11-Jul-1974" ), Boolean.TRUE}, {df.parse( "10-Jul-1974" ), "==", null, Boolean.FALSE},
-                {df.parse( "10-Jul-1974" ), "!=", null, Boolean.TRUE}, {null, "==", null, Boolean.TRUE}, {null, "==", df.parse( "10-Jul-1974" ), Boolean.FALSE}, {null, "!=", null, Boolean.FALSE}, {null, "!=", df.parse( "10-Jul-1974" ), Boolean.TRUE}};
+        final Object[][] data = {{df.parse( "10-Jul-1974" ), "==", df.parse( "10-Jul-1974" ), Boolean.TRUE}, 
+                                 {df.parse( "10-Jul-1974" ), "<", df.parse( "11-Jul-1974" ), Boolean.TRUE},
+                                 {df.parse( "10-Jul-1974" ), ">=", df.parse( "10-Jul-1974" ), Boolean.TRUE}, 
+                                 {df.parse( "10-Jul-1974" ), "!=", df.parse( "11-Jul-1974" ), Boolean.TRUE}, 
+                                 {df.parse( "10-Jul-2000" ), ">", df.parse( "10-Jul-1974" ), Boolean.TRUE},
+                                 {df.parse( "10-Jul-1974" ), ">=", df.parse( "10-Jul-1974" ), Boolean.TRUE}, 
+                                 {df.parse( "11-Jul-1974" ), ">=", df.parse( "10-Jul-1974" ), Boolean.TRUE}, 
+                                 {df.parse( "10-Jul-1974" ), ">=", df.parse( "11-Jul-1974" ), Boolean.FALSE},
+                                 {df.parse( "10-Jul-2000" ), "<", df.parse( "10-Jul-1974" ), Boolean.FALSE},
+                                 {df.parse( "10-Jul-1974" ), "<", df.parse( "11-Jul-1974" ), Boolean.TRUE}, 
+                                 {df.parse( "10-Jul-1974" ), "==", null, Boolean.FALSE},
+                                 {df.parse( "10-Jul-1974" ), "!=", null, Boolean.TRUE}, 
+                                 {null, "==", null, Boolean.TRUE}, 
+                                 {null, "==", df.parse( "10-Jul-1974" ), Boolean.FALSE}, 
+                                 {null, "!=", null, Boolean.FALSE}, 
+                                 {null, "!=", df.parse( "10-Jul-1974" ), Boolean.TRUE},
+                                 {df.parse( "10-Jul-1974" ), "memberOf", col, Boolean.TRUE},
+                                 {df.parse( "15-Jul-1974" ), "memberOf", col, Boolean.FALSE},
+                                 {null, "memberOf", col, Boolean.FALSE},
+                                 {df.parse( "10-Jul-1974" ), "memberOf", null, Boolean.FALSE},
+                                 {df.parse( "10-Jul-1974" ), "not memberOf", col, Boolean.FALSE},
+                                 {df.parse( "15-Jul-1974" ), "not memberOf", col, Boolean.TRUE},
+                                 {null, "not memberOf", col, Boolean.TRUE},
+                                 {df.parse( "10-Jul-1974" ), "not memberOf", null, Boolean.FALSE}
+                                 };
         runEvaluatorTest( data,
                           ValueType.DATE_TYPE );
     }
 
     public void testByte() {
-        final Object[][] data = {{new Byte( "1" ), "==", new Byte( "1" ), Boolean.TRUE}, {new Byte( "1" ), "==", new Byte( "2" ), Boolean.FALSE}, {new Byte( "1" ), "!=", new Byte( "2" ), Boolean.TRUE},
-                {new Byte( "1" ), "!=", new Byte( "1" ), Boolean.FALSE}, {new Byte( "1" ), "<=", new Byte( "1" ), Boolean.TRUE}, {new Byte( "1" ), "==", null, Boolean.FALSE}, {null, "==", null, Boolean.TRUE}, 
-                {null, "!=", null, Boolean.FALSE}, {null, "!=", new Byte( "1" ), Boolean.TRUE}, {null, "==", new Byte( "1" ), Boolean.FALSE}};
+        Collection col = new ArrayList();
+        col.add( new Byte( "1" ) );
+        col.add( new Byte( "2" ) );
+
+        final Object[][] data = {{new Byte( "1" ), "==", new Byte( "1" ), Boolean.TRUE}, 
+                                 {new Byte( "1" ), "==", new Byte( "2" ), Boolean.FALSE}, 
+                                 {new Byte( "1" ), "!=", new Byte( "2" ), Boolean.TRUE},
+                                 {new Byte( "1" ), "!=", new Byte( "1" ), Boolean.FALSE}, 
+                                 {new Byte( "1" ), "<=", new Byte( "1" ), Boolean.TRUE}, 
+                                 {new Byte( "1" ), "==", null, Boolean.FALSE}, 
+                                 {null, "==", null, Boolean.TRUE}, 
+                                 {null, "!=", null, Boolean.FALSE}, 
+                                 {null, "!=", new Byte( "1" ), Boolean.TRUE}, 
+                                 {null, "==", new Byte( "1" ), Boolean.FALSE},
+                                 {new Byte( "1" ), "memberOf", col, Boolean.TRUE},
+                                 {new Byte( "3" ), "memberOf", col, Boolean.FALSE},
+                                 {null, "memberOf", col, Boolean.FALSE},
+                                 {new Byte( "1" ), "memberOf", null, Boolean.FALSE},
+                                 {new Byte( "1" ), "not memberOf", col, Boolean.FALSE},
+                                 {new Byte( "3" ), "not memberOf", col, Boolean.TRUE},
+                                 {null, "not memberOf", col, Boolean.TRUE},
+                                 {new Byte( "1" ), "not memberOf", null, Boolean.FALSE}
+                                 };
         runEvaluatorTest( data,
                           ValueType.PBYTE_TYPE );
 
@@ -258,8 +564,7 @@
                                                     final Extractor extractor,
                                                     final Object[] row,
                                                     final Evaluator evaluator) {
-        final FieldValue value = FieldFactory.getFieldValue( row[2],
-                                                       valueType );
+        final FieldValue value = FieldFactory.getFieldValue( row[2] );
         final boolean result = evaluator.evaluate( extractor,
                                                    row[0],
                                                    value );
@@ -284,7 +589,8 @@
                                                  final Extractor extractor,
                                                  final Object[] row,
                                                  final Evaluator evaluator) {
-        final VariableContextEntry context = this.getContextEntry( (FieldExtractor) extractor,
+        final VariableContextEntry context = this.getContextEntry( evaluator, 
+                                                             (FieldExtractor) extractor,
                                                              valueType,
                                                              row );
         final boolean result = evaluator.evaluateCachedRight( context,
@@ -310,7 +616,8 @@
                                                 final Extractor extractor,
                                                 final Object[] row,
                                                 final Evaluator evaluator) {
-        final VariableContextEntry context = this.getContextEntry( (FieldExtractor) extractor,
+        final VariableContextEntry context = this.getContextEntry( evaluator,
+                                                                   (FieldExtractor) extractor,
                                                              valueType,
                                                              row );
         final boolean result = evaluator.evaluateCachedLeft( context,
@@ -351,88 +658,110 @@
         }
     }
 
-    private VariableContextEntry getContextEntry(final FieldExtractor extractor,
+    private VariableContextEntry getContextEntry(final Evaluator evaluator,
+                                                 final FieldExtractor extractor,
                                                  final ValueType valueType,
                                                  final Object[] row) {
         final Declaration declaration = new Declaration( "test",
                                                    extractor,
                                                    null );
-        if ( valueType.isIntegerNumber() || valueType.isChar() ) {
-            final LongVariableContextEntry context = new LongVariableContextEntry( extractor,
-                                                                             declaration );
+        
+        if( Operator.MEMBEROF.equals( evaluator.getOperator() ) ||
+            Operator.NOTMEMBEROF.equals( evaluator.getOperator() ) ) {
+
+            final ObjectVariableContextEntry context = new ObjectVariableContextEntry( extractor,
+                                                                                       declaration );
+            if (row[2] == null) {
+               context.leftNull = true;
+            } else {
+               context.left = row[2];
+            }
+           
+            if (row[0] == null) {
+               context.rightNull = true;
+            } else {
+               context.right = row[0];
+            }
+            return context;
             
-            if ( valueType.isChar() ) {
+        } else {
+            if ( valueType.isIntegerNumber() || valueType.isChar() ) {
+                final LongVariableContextEntry context = new LongVariableContextEntry( extractor,
+                                                                                 declaration );
+                
+                if ( valueType.isChar() ) {
+                    if (row[2] == null) {
+                        context.leftNull = true;
+                    } else {
+                        context.left = ((Character) row[2]).charValue();
+                    }
+                    
+                    if (row[0] == null) {
+                        context.rightNull = true;
+                    } else {
+                        context.right = ((Character) row[0]).charValue();
+                    }
+                } else {
+                    if (row[2] == null) {
+                        context.leftNull = true;
+                    } else {
+                        context.left = ((Number) row[2]).longValue();
+                    }
+                    
+                    if (row[0] == null) {
+                        context.rightNull = true;
+                    } else {
+                        context.right = ((Number) row[0]).longValue();
+                    }
+                }
+                return context;
+            } else if ( valueType.isBoolean() ) {
+                final BooleanVariableContextEntry context = new BooleanVariableContextEntry( extractor,
+                                                                                       declaration );
+                
                 if (row[2] == null) {
                     context.leftNull = true;
                 } else {
-                    context.left = ((Character) row[2]).charValue();
+                    context.left = ((Boolean) row[2]).booleanValue();
                 }
                 
                 if (row[0] == null) {
                     context.rightNull = true;
                 } else {
-                    context.right = ((Character) row[0]).charValue();
+                    context.right = ((Boolean) row[0]).booleanValue();
                 }
+                return context;
+            } else if ( valueType.isFloatNumber() ) {
+                final DoubleVariableContextEntry context = new DoubleVariableContextEntry( extractor,
+                                                                                     declaration );
+                if (row[2] == null) {
+                    context.leftNull = true;
+                } else {
+                    context.left = ((Number) row[2]).doubleValue();
+                }
+                
+                if (row[0] == null) {
+                    context.rightNull = true;
+                } else {
+                    context.right = ((Number) row[0]).doubleValue();
+                }
+                return context;
             } else {
+                final ObjectVariableContextEntry context = new ObjectVariableContextEntry( extractor,
+                                                                                     declaration );
                 if (row[2] == null) {
                     context.leftNull = true;
                 } else {
-                    context.left = ((Number) row[2]).longValue();
+                    context.left = row[2];
                 }
                 
                 if (row[0] == null) {
                     context.rightNull = true;
                 } else {
-                    context.right = ((Number) row[0]).longValue();
+                    context.right = row[0];
                 }
+                return context;
             }
-            return context;
-        } else if ( valueType.isBoolean() ) {
-            final BooleanVariableContextEntry context = new BooleanVariableContextEntry( extractor,
-                                                                                   declaration );
-            
-            if (row[2] == null) {
-                context.leftNull = true;
-            } else {
-                context.left = ((Boolean) row[2]).booleanValue();
-            }
-            
-            if (row[0] == null) {
-                context.rightNull = true;
-            } else {
-                context.right = ((Boolean) row[0]).booleanValue();
-            }
-            return context;
-        } else if ( valueType.isFloatNumber() ) {
-            final DoubleVariableContextEntry context = new DoubleVariableContextEntry( extractor,
-                                                                                 declaration );
-            if (row[2] == null) {
-                context.leftNull = true;
-            } else {
-                context.left = ((Number) row[2]).doubleValue();
-            }
-            
-            if (row[0] == null) {
-                context.rightNull = true;
-            } else {
-                context.right = ((Number) row[0]).doubleValue();
-            }
-            return context;
-        } else {
-            final ObjectVariableContextEntry context = new ObjectVariableContextEntry( extractor,
-                                                                                 declaration );
-            if (row[2] == null) {
-                context.leftNull = true;
-            } else {
-                context.left = row[2];
-            }
-            
-            if (row[0] == null) {
-                context.rightNull = true;
-            } else {
-                context.right = row[0];
-            }
-            return context;
         }
     }
 




More information about the jboss-svn-commits mailing list